Pergunta

Eu gostaria de aplicar o patch action_mailer mencionado nesta discussão, mas eu nunca ter aplicado um patch antes e eu não tenho certeza de como estes funcionam: https://rails.lighthouseapp.com/projects/8994/tickets/2263

A minha acção mailer gem está aqui: /opt/ruby-enterprise-1.8.6-20090421/lib/ruby/gems/1.8/gems/actionmailer-2.3.2

Eu suponho eu preciso ir para esse diretório e execute o comando patch de ... algo assim?

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

Uma coisa que eu realmente não estou claro sobre também é que o arquivo de correção se refere ao diretório "ActionMailer" mas o meu é chamado de "ActionMailer-2.3.2"

Foi útil?

Solução

Você normalmente não deseja corrigir a própria fonte jóia. Você provavelmente vai querer congelar as gemas em ${RAILS_ROOT}/vendor/rails, e, em seguida, aplicar o patch no local.

A partir do seu $ {RAILS_ROOT} dir, despejar todos os seus trilhos gemas em vendor / rails

rake rails:freeze:gems

Aplicar o patch

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

Outras dicas

A resposta de Micholson acima obras. Mas, para corrigir o gem real para todos os trilhos aplicativos (ver o meu comentário sobre a sua resposta) isso funcionou:

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

Eu descobri que você também pode reverter um patch com -R se alguma coisa der errado. Estou surpreso este processo não foi melhor documentado em algum lugar. Esperemos que isto irá transformar-se em pesquisas do Google para pessoas novo para remendar como eu.

Aqui é um shell de uma linha para remendar uma jóia:

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)

Outro exemplo usando gist gem:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top