Ruby on rails 如何将补丁应用于RubyonRails?

Ruby on rails 如何将补丁应用于RubyonRails?,ruby-on-rails,ruby,rubygems,patch,Ruby On Rails,Ruby,Rubygems,Patch,我想应用此线程中提到的action_mailer补丁,但我以前从未应用过补丁,我不确定这些补丁是如何工作的: 我的action mailer gem在这里:/opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/actionmailer-2.3.2 我想我需要转到那个目录并运行补丁命令…类似这样的东西 cd /opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/ wge

我想应用此线程中提到的action_mailer补丁,但我以前从未应用过补丁,我不确定这些补丁是如何工作的:

我的action mailer gem在这里:/opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/actionmailer-2.3.2

我想我需要转到那个目录并运行补丁命令…类似这样的东西

cd /opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/
wget https://rails.lighthouseapp.com/attachments/108548/0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
patch < 0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
cd/opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/
wgethttps://rails.lighthouseapp.com/attachments/108548/0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
补丁<0001-Fix-implicit-multipart-mailer-views-when-RAILS\u ROOT.patch

还有一件事我也不太清楚,补丁文件引用了“actionmailer”目录,但我的名为“actionmailer-2.3.2”

您通常不想对gem源代码本身进行补丁。您可能希望将gems冻结到
${RAILS\u ROOT}/vendor/RAILS
,然后在本地应用补丁

从${RAILS\u ROOT}目录中,将所有RAILS gem转储到vendor/RAILS中

rake rails:freeze:gems
应用补丁

  cd vendor/rails/ 
  patch -p1 < 0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
cd供应商/rails/
修补程序-p1<0001-Fix-implicit-multipart-mailer-views-when-RAILS\u ROOT.patch

Micholson的上述答案有效。但要修补所有rails应用程序的实际gem(参见我对他的回答的评论),这是可行的:

cd /opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/actionmailer-2.3.2
wget sudo wget https://rails.lighthouseapp.com/attachments/108548/0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
sudo patch -p2 < 0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
sudo rm 0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
cd/opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/actionmailer-2.3.2
wget sudo wgethttps://rails.lighthouseapp.com/attachments/108548/0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
sudo补丁-p2<0001-Fix-implicit-multipart-mailer-views-when-RAILS\u ROOT.patch
sudo rm 0001-Fix-implicit-multipart-mailer-views-when-RAILS\u ROOT.patch

我发现,如果出现任何问题,也可以使用-R反转补丁。我很惊讶这个过程没有更好的文档记录。希望这会出现在谷歌搜索中,搜索像我这样的新手。

这里有一个用于修补宝石的shell-one-liner:


patch-d“$(gem env gemdir)”/gems/actionmailer-*-p1