Ruby on rails 如何为多个Rails 2.3网站使用相同的代码库管理差异
我们有一个使用Rails2.3.x、bundler、nginx、passenger和git的网站,现在希望使用相同的代码部署一个非常类似的网站。两者的区别包括:Ruby on rails 如何为多个Rails 2.3网站使用相同的代码库管理差异,ruby-on-rails,git,configuration,nginx,Ruby On Rails,Git,Configuration,Nginx,我们有一个使用Rails2.3.x、bundler、nginx、passenger和git的网站,现在希望使用相同的代码部署一个非常类似的网站。两者的区别包括: 地点 数据库 某些情况下的验证 某些情况下的观点 在使用相同的代码库时,管理这些差异的最佳方法是什么? 我们有一些想法: 创建新的Rails环境,例如production-a和production-b,并处理相应环境文件中的差异。一个潜在的问题是,许多gem和插件都是硬编码的,用于寻找生产或开发环境 使用Passenger设置全局
- 地点
- 数据库
- 某些情况下的验证
- 某些情况下的观点
- 创建新的Rails环境,例如production-a和production-b,并处理相应环境文件中的差异。一个潜在的问题是,许多gem和插件都是硬编码的,用于寻找生产或开发环境
- 使用Passenger设置全局变量,或使用每个请求的域来确定要使用的上下文。问题是rake任务、cron作业等无法访问此状态
- 维护配置目录的两个版本。这会给维护所有配置文件的两个版本带来不便,其中许多版本是相同的。另外,我现在知道了如何利用git来正确地实现这一点
如有任何想法、提示或示例,将不胜感激!相关,但似乎不完整。我在rails 2.3.x项目中使用的一个解决方案是将整个站点转换为
引擎。这其实很简单,在vendor\plugins\
下创建一个文件夹,并将所有app
的内容移动到那里。您可以看到Rails2.3的解释
如果需要,您甚至可以将所有迁移和其他内容移动到那里,并使用rake任务
运行这些
然后,需要否决的所有内容都可以使用引擎放置在实际的rails项目中。因此,您将拥有两个rails项目,它们有自己的配置、区域设置和一些本地否决权,以及一个大型共享插件/引擎
我们使用git子模块
在不同的项目中保持代码同步
在Rails3中,这甚至更容易,因为引擎现在只是一块宝石
希望这有帮助。谢谢,确实有帮助。您是否使用rake+rsync将engine/public中的文件复制到public?我们正在使用Bundler-文件将放在哪里?似乎很多东西最终都会在不同的站点中被复制。好吧,使用引擎作为插件(rails 2.3.x),rails项目中只有一个Gemfile,afaik:。但这只是一个猜测。在bundler出现之前我就这么做了。如果您使用的是gems(Rails3.x),那么每个gem都有自己的Gemfile。我只是手动复制了这些文件。有一些重复,但它也给了你在重要的事情上否决的自由。最重要的是:你消除了主要的重复!您的代码在应用程序之间共享。