我们公司从一个单一的产品开始,一个由一些 java 服务支持的 rails 应用程序,然后决定他们想要另一种产品,最初与第一个有很大不同,但随着时间的推移,我们已经意识到它们开始融合,并且对其中一个进行代码更改需要对另一个进行类似的代码更改才能修复新功能/错误。这显然正在成为一种痛苦。
在某些情况下,我们的 gem 可以共享其中的一些功能,但它超越了 ruby 进入了 javascript、css 等。
所以我的任务是将这两个应用程序合并到一个代码库中。我认为最终我们希望它成为一个具有基于权限的角色访问的单一应用程序,但这将在很久以后出现。
快速将它们组合在一起的第一个想法是创建两个 Rails 引擎并在它们之间共享公共(public)库。我认为这是组合代码、找到共同部分并开始分享的最快方式。
我的第一个问题是如何在应用程序之间进行路由。一个应用程序使用一个永不更改的域名,另一个应用程序有许多域。有人可以建议我如何将特定请求路由到特定应用程序,以便它们可以在共享公共(public)库代码库的同时保持独立启动?
或者,如果有人对组合这些应用程序的方式有其他建议,我会全力以赴。
它们都是运行 JRUBY 1.5.3 的 Rails 2.3.10 应用程序,但我们愿意升级到 Rails3,如果这会使事情变得更容易或更清洁(即具有更好的 Rack 集成)
我没有做过任何 Rack 编程,但学习这是否会让我们的生活更轻松一点也不坏。
最佳答案
您应该避免在服务器级别共享代码,最好的做法是构建包含通用代码库的库并在开发过程中使用它们。最好的拍摄可能是使用帮助程序,因为它是提供模块的最简单方法,这些模块在您的代码中提供功能。
关于为一个应用程序重写功能,选择具有更大的现成代码集的应用程序作为基础。应该可以使用支持 url 重写的 Web 服务器按方法迁移代码。我想过将 apache 与 mod_rewrite 一起使用。所以计划是:
您不必使用 apache,应该有其他 Web 服务器支持 url 重写。
我正在考虑使用这种算法将我们的应用程序重写为 rails 3.0。
关于ruby-on-rails - 将 2 个 Rails 应用程序组合到一个代码库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4220233/