2009-05-30 47 views
12

我想申请在这个线程中提到的action_mailer补丁,但我以前从来没有在应用补丁程序,我不知道如何将这些工作: https://rails.lighthouseapp.com/projects/8994/tickets/2263如何将补丁应用于轨道上的红宝石?

我的行动邮件的宝石在这里中:/ opt /红宝石-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 

有一件事我不是很清楚的也是这个补丁文件是指“的ActionMailer”目录,但我的被称为“的ActionMailer-2.3.2”

回答

11

您通常不希望修补宝石来源本身。您可能需要将宝石冻结到${RAILS_ROOT}/vendor/rails,然后在本地应用此修补程序。

从$ {RAILS_ROOT}目录,倾倒所有轨宝石为供应商/轨道

rake rails:freeze:gems 

应用补丁

cd vendor/rails/ 
    patch -p1 < 0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch 
+0

嗨Micholson,谢谢你的回应。我同意你通常会想要对它们进行修改,但由于这个bug的性质,我希望在所有的rails应用程序中修复它(并且希望不会检查更多的文件进入版本控制)。我可能只是从你写的内容中得到它 - 在阅读了-p选项后,目录问题变得更有意义:http://linux.die.net/man/1/patch干杯! – 2009-05-30 20:21:21

7

Micholson的回答上述作品。但是,修补所有Rails应用实际的创业板(看到我对他的回答评论)这工作:

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 

我发现你也可以逆转与-R一个补丁,如果有什么差错。我很惊讶这个过程并没有更好地记录在某个地方。希望这可以在Google搜索中找到像我这样的新补丁人员。

+1

它对我来说!我感谢你。 – 2009-07-24 13:32:24