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的猴子补丁中 ,然后通过初始化程序加载补丁文件。