14

我想应用此线程中提到的 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

我假设我需要去那个目录并运行补丁命令......像这样的东西?

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”

4

3 回答 3

11

您通常不想修补 gem 源本身。您可能希望将 gem 冻结成${RAILS_ROOT}/vendor/rails,然后在本地应用补丁。

从您的 ${RAILS_ROOT} 目录中,将所有 rails gem 转储到 vendor/rails

rake rails:freeze:gems

应用补丁

  cd vendor/rails/ 
  patch -p1 < 0001-Fix-implicit-multipart-mailer-views-when-RAILS_ROOT.patch
于 2009-05-30T19:45:04.070 回答
8

米科尔森的上述回答有效。但是要修补所有 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 反转补丁。我很惊讶这个过程在某处没有得到更好的记录。希望这会出现在谷歌搜索中,寻找像我这样的新修补程序。

于 2009-05-30T20:55:42.540 回答
0

这是一个用于修补 gem 的 shell one-liner:

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)

另一个使用gistgem 的例子:

patch -d "$(gem env gemdir)"/gems/gist-* -p1 < <(curl -s https://github.com/defunkt/gist/commit/5843e9827f529cba020d08ac764d70c8db8fbd71.patch)

于 2018-07-11T23:59:51.443 回答