ruby-on-rails - 将 2 个 Rails 应用程序组合到一个代码库

标签 ruby-on-rails migration jruby rack

我们公司从一个单一的产品开始,一个由一些 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 访问。
  • 选择一种在两者中都相似的方法并在一个应用程序中重写它以支持两种应用程序的要求。
  • 在 apache 中添加一个 mod_rewrite 规则以仅在此操作上将流量重定向到一个应用程序。
  • 转到第二点,直到所有内容都被重写。
  • 删除旧应用程序并调整 routing/mod_rewrite 以使用一个应用程序

  • 您不必使用 apache,应该有其他 Web 服务器支持 url 重写。

    我正在考虑使用这种算法将我们的应用程序重写为 rails 3.0。

    关于ruby-on-rails - 将 2 个 Rails 应用程序组合到一个代码库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4220233/

    相关文章:

    ruby-on-rails - Gemfile 导致扭矩盒环境变量变为空

    ruby-on-rails - 如何检查在测试期间是否调用了 API

    ruby-on-rails - 如何在 Rails 迁移中限制字符串列的值?

    ruby-on-rails - Rails 迁移 : self. up 和 self.down 与更改

    ruby-on-rails-3 - 在 tomcat 上运行的 JRuby 应用程序的序列号

    ruby-on-rails - 在 ruby​​ on rails 中更新数据库字段

    java - Jruby on Rails java 对象序列化

    javascript - Rails + AJAX 返回的 HTML 多于预期

    ruby-on-rails - 我可以使用 Amazon Elastic Transcoder 仅创建缩略图吗?

    authentication - 无法连接到数据库以执行身份功能