我们很快将在一个全新的 Rails 3 应用程序中重新编写一个使用了 5 年的 Rails 应用程序,该应用程序的代码基础非常不健全,并且具有所有新的热点。当前的应用程序有一个大量的自定义管理 UI 后端,它完全依赖于现在的管理框架。只是一些基本的控制器类和一些有用的 CSS 约定。但是维护这个 UI 需要做很多工作,特别是如果我们希望它看起来不错。
所以我在市场上寻找一个 Admin UI 框架,它可以让简单的东西变得微不足道,但没有在形式和功能上获得更复杂的定制方式。
顶级竞争者ActiveAdmin似乎很受欢迎,在玩了一会儿之后,我有些担心。它似乎声明了一个存在于单个 ruby 文件中的完整唯一的 DSL。这有点简洁,但它也与大多数其他 Rails 应用程序的架构方式完全不同。它抽象了视图、控制器的助手,并为您提供了一个纯 ruby DSL。在我看来,这会妨碍在我们的管理视图中做一些棘手的事情,更高级的自定义事情。DSL 很棒,除非您想做一些他们不明确支持的事情。
我的实验中的示例“资源”,没有控制器也没有视图。
ActiveAdmin.register Region do
menu parent: "Wines"
show title: :name
index do
column(:zone) { |o| link_to o.zone, admin_region_path(o) }
column(:name) { |o| link_to o.name, admin_region_path(o) }
default_actions
end
end
所以,问题:
- 是不是基于单独文件中的标准 Rails MVC 架构,以及管理区域的典型控制器继承实现,实际上我应该关注什么?从长远来看,它会阻碍可扩展性吗?
- ActiveAdmin 中的 DSL 是否比我认为的更好、更灵活?
- 我是否应该寻找其他一些更适合我的高度定制目标的框架?
- 我应该停止懒惰并自己动手吗?
- 选择
Mongoid
代替MySQL
作为数据库是否会影响上述任何问题?