我们公司开始使用单一产品,一些由一些
Java服务支持的rails应用程序,然后决定他们想要另一种产品最初与第一种产品有很大不同,但随着时间的推移,我们已经意识到它们开始趋同,将代码更改为一个需要对另一个进行类似的代码更改以进行新功能/错误修复.这显然是一种痛苦.
在某些情况下,我们拥有共享一些此功能的宝石,但它超越了ruby到javascript,css等.
所以我的任务是将这两个应用程序合并到一个代码库中.我认为最终我们希望它是一个具有基于权限的角色访问权限的单个应用程序,但这将会更晚.
我第一次想到将它们快速组合在一起就是创建两个rails引擎并在它们之间共享公共库.我认为这是组合代码,查找常见部分和开始共享的最快捷方式.
我的第一个问题是如何在应用程序之间进行路由.一个应用程序使用永远不会更改的单个域名,另一个应用程序具有许多域.有人可以建议我如何将特定请求路由到特定应用程序,以便在共享库的公共代码库时可以保持独立开始吗?
或者,如果有人有关于组合这些应用程序的方法的其他建议,我会全神贯注.
它们都是运行JRUBY 1.5.3的Rails 2.3.10应用程序,但我们可能会升级到Rails3,如果这会使事情变得更容易或更清晰(即更好的Rack集成)
我没有做任何Rack编程,但从来没有伤害过,如果这将使我们的生活更轻松.
解决方法
你建议使用引擎的想法.
对于路由,我会在Rails之外处理它.
例如,您将在Nginx中执行以下操作:
server { # Match only one host. listen 80 default; server_name YOUR_SINGLE_APP_DOMAIN; location / { upstream YOUR_SINGLE_APP_RAILS; } } server { # Fall thru and match any other host. listen 80 default; server_name ~^.*$; location / { upstream YOUR_MULTI_DOMAIN_APP_RAILS; } }