Как применить патч к рубину на рельсах?
Я хотел бы применить патч 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"
Ответы
Ответ 1
Обычно вы не хотите исправлять сам источник драгоценных камней. Вероятно, вы захотите заморозить драгоценные камни в ${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
Ответ 2
Мишолсон ответит над работами. Но для исправления фактического драгоценного камня для всех приложений с рельсами (см. Мой комментарий к его ответу) это сработало:
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, ищем людей, которые меня не исправляют.