我想应用此线程中提到的action_mailer补丁,但我之前从未应用过补丁,但我不确定这些是如何工作的: https://rails.lighthouseapp.com/projects/8994/tickets/2263
我的动作邮件宝石在这里:/opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/actionmailer-2.3.2
我假设我需要去那个目录并运行patch命令......这样的事情?
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”
答案 0 :(得分:11)
您通常不想修补宝石源本身。您可能希望将gems冻结到${RAILS_ROOT}/vendor/rails
,然后在本地应用补丁。
从$ {RAILS_ROOT}目录中,将所有rails gems转储到vendor / rails
rake rails:freeze:gems
应用补丁
cd vendor/rails/
patch -p1 < 0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
答案 1 :(得分:8)
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
我发现如果出现任何问题,你也可以用-R反转补丁。我很惊讶这个过程在某个地方没有更好的记录。希望这会在谷歌搜索中出现像我这样的新修补人员。
答案 2 :(得分:0)
这是一个用于修补宝石的贝壳一线:
patch -d "$(gem env gemdir)"/gems/actionmailer-* -p1 < <(curl -s https://rails.lighthouseapp.com/attachments/108548/0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch)
另一个使用gist
gem的示例:
patch -d "$(gem env gemdir)"/gems/gist-* -p1 < <(curl -s https://github.com/defunkt/gist/commit/5843e9827f529cba020d08ac764d70c8db8fbd71.patch)