Ruby on Rails:修补Rack并部署它
我需要使用以下补丁修补Rack: http : //github.com/rack/rack/commit/dae12e088592ee69545b5f2f81b87f4959859164
这样做的最佳做法是什么? 我应该打开包装,应用补丁,然后重新包装gem并用capistrano运送它以确保我的gem版本到达目标服务器?
我可以直接将机架放入供应商/插件/并依赖它首先加载到系统范围的gem之前吗?
我想采取阻力最小的路径,并且能够轻松地将其部署到许多环境中。
如果您通过向Gemfile添加选项来使用Bundler,则可以使用bundler
从存储库安装gem:
gem’ rack’,:git =>’git://github.com/my-account/rack.git’
这使得修补和部署修补的gem变得更加容易。 将其分配到您的帐户,修补它,然后使用该基础。
Rack不是一个插件,它是一个gem,所以如果安装在vendor/plugins
,它可能无法正常工作。
或者,您可以从本地文件系统(如vendor/
子目录)加载Bundler,而不是指向您的git存储库:
gem 'rack', :path => File.join(File.dirname(__FILE__), '/vendor/gems/rack')
这使您可以即时调试,而无需git拉/推您的更改。
其他答案似乎需要Bundler / Rails 3.因为我使用的是Rails 2.3.10和旧式的Rails config.gem系统,所以它们对我不起作用。
我能够在这里为这个问题找到一个有效的解决方案。 作者将机架1.2中的固定代码包含在机架1.1的猴子补丁中 ,然后通过初始化程序加载补丁文件。