使用rails进行模块化开发



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

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

1)为rails应用程序和后台worker共享相同的代码。我们现在有了一个可以做所有事情的大应用程序。(利:它解决了代码共享问题,弊:它使应用程序臃肿)
2)将ActiveRecord模型捆绑在gem中,并在两个应用程序中都需要它(优点:模块化是最好的,缺点:在开始开发时不容易)
3)在两个代码库中复制活动记录模型(Con:代码重复,在更新数据库时可能导致错误)

我的背景是。net。通常我会把我的模型放在一个dll中,这将解决共享代码的问题,但我不确定这里的"ruby方式"是什么。

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

选项1。它可能会让人觉得臃肿,但Rails在保持DRY的情况下工作得最好。你可能会惊讶地发现,它并没有像你想象的那么臃肿。

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

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

最新更新