如何使用ActiveAdmin或RailsAdmin保持DRY,与主应用程序分开

我正在构建一个仅限JSON的应用程序 ,它基本上是一个更精简的Rails,中间件更少,模块更少。 这是一个在Rails 4中构建的应用程序。

我想开发一个简单的应用程序,可以管理主应用程序的数据库中的数据。 为此,我想使用Active Admin或Rails Admin 。 但是这两个选项都以某种方式使用底层模型及其validation,要求等构建在其上。

这意味着我需要至少共享主应用程序和RailsAdmin应用程序之间的模型。

我最好怎么做? 是否有关于如何在主应用程序旁边的单独rails应用程序中构建管理应用程序的良好指南,而不是将其集成?

作为旁注:另一个很好的理由将管理员放在与主应用程序不同的应用程序中,但是在共享数据库上,是无数的依赖项,像ActiveAdmin这样的gem。

另请注意,我不仅仅对在不同的域或不同的服务器上运行管理员感兴趣,而且主要是为了让主应用程序保持精简和专注。 并保持与我的主应用程序之外的ActiveAdmin之类的依赖关系。


脚注:

  • ActiveAdmin和RailsAdmin都不是性能问题。 这是他们需要中间件,而只有JSON的Rail应用程序,只需要很少的模块,帮助器和中间件! Rails-API提供了如此纤薄的堆栈。 性能不是管理员而不是管理员,而是Full-Rails vs Rails-API。
  • 性能不是我的主要问题,依赖和膨胀是! 我现在有一个非常苗条,专注和精益的Rails应用程序,它可以用大多数Sinatra应用程序测量自己:)。 只有三个额外的gem(每个gem都有自己的一些依赖)和一堆非常薄的中间件,我可以非常轻松地升级,管理和调试。

更实用:我没有 Devise(它是一个JSON-API,所以经过令牌validation), 没有任何视图或模板引擎。 没有Formtastic,No Paperclip,Rmagic,Kminari(寻呼机)等等。 当我拉入“只是一个管理员”时,所有这些都将被添加到我的应用程序中。

这篇博文描述了一个有趣的方法: https : //content.pivotal.io/blog/migrating-from-a-single-rails-app-to-a-suite-of-rails-engines

他们使用几乎空的应用程序作为容器,并将他们的实际应用程序安装为Rails引擎。

您是否测量过将ActiveAdmin等工具添加到其余API的速度中的影响? 如果没有,这听起来像是对我来说过早优化的情况。

如果API速度确实受到加载但未使用的库的影响,那么您可以创建多个应用程序并在git子模块中共享模型。