带轨道的模块化开发

时间:2013-05-30 01:53:15

标签: ruby-on-rails ruby modularity

我正在开发一个多服务器Web应用程序,我想知道ruby / rails中有关模块化的最佳实践。

基本上我正在寻找将我的ActiveRecord模型从rails应用程序共享到我的后台工作程序应用程序(2个不同的heroku实例)的最佳方法。

1)为rails app和后台工作者共享相同的代码。我们现在拥有一个可以完成所有工作的大型应(亲:它解决了代码共享问题,Con:它使应用程序膨胀)
2)将ActiveRecord模型捆绑在一个gem中并在两个应用程序中都需要它(Pro:模块化最好,Con:起动开发时不容易)
3)在两个代码库中复制活动记录模型(Con:代码重复,在更新数据库时可能导致错误)

现在,我来自.Net背景。通常我会将我的模型放在一个dll中,这样可以解决共享代码的问题,但我不确定这里的“红宝石方式”是什么。

我是否应该在某个地方寻找ruby方式的架构最佳实践?

2 个答案:

答案 0 :(得分:3)

选项1.它可能会感到臃肿,但Rails在保持DRY时效果最佳。你可能会惊讶地发现它并没有像你想象的那样变得臃肿。

分离出gem是可行的,但应限于框架或实用程序代码。如果你想让Rails(和你自己)高兴,那么业务逻辑应该保留在应用程序中。

答案 1 :(得分:0)

您可以将共享模型放入Rails Engine并将其打包为gem。 Rails引擎就像是Rails应用程序的一个微型子集,可以在其他Rails应用程序中重用。