3

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

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

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

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

有没有地方我应该在 ruby​​ 方式上寻找架构最佳实践?

4

2 回答 2

3

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

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

于 2013-05-30T03:51:27.513 回答
0

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

于 2013-05-30T04:47:19.960 回答