Как вы примените патч к ruby ​​на рельсах? - PullRequest
14 голосов
/ 30 мая 2009

Я бы хотел применить патч 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"

Ответы [ 3 ]

11 голосов
/ 30 мая 2009

Как правило, вы не хотите исправлять источник самоцвета. Возможно, вы захотите заморозить драгоценные камни в ${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
8 голосов
/ 31 мая 2009

Ответ Михолсона выше работает. Но чтобы исправить реальный гем для всех приложений 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 появятся люди, которые не знакомы с патчами, как я.

0 голосов
/ 12 июля 2018

Вот оболочка с одним вкладышем для исправления драгоценного камня:

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)

...