2009-05-30 7 views
12

mi piacerebbe applicare la patch action_mailer menzionati in questo thread, ma non ho mai applicato una patch prima e non sono sicuro di come funzionano: https://rails.lighthouseapp.com/projects/8994/tickets/2263Come si applica una patch a ruby ​​su rail?

La mia azione mailer gemma è qui:/opt/ruby -enterprise-1.8.6-20090421/lib/ruby ​​/ gems/1.8/gems/actionmailer-2.3.2

Suppongo di dover andare in quella directory ed eseguire il comando patch ... qualcosa del genere?

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 

Una cosa che non sono davvero chiare su anche è che il file di patch si riferisce alla directory "ActionMailer" ma il mio si chiama "ActionMailer-2.3.2"

risposta

11

In genere non vogliono per riparare la gemma stessa. Probabilmente vorrai congelare le gemme in ${RAILS_ROOT}/vendor/rails e quindi applicare la patch localmente.

Dal vostro $ {} RAILS_ROOT dir, scaricare tutti i tuoi rotaie gemme in vendor/rotaie

rake rails:freeze:gems 

applicare la patch

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

Ciao Micholson, grazie per la risposta. Sono d'accordo che di solito vorrai addebitarli, ma a causa della natura di questo bug mi piacerebbe averlo corretto su tutte le mie app di rotaie (e spero di non dover controllare più file nel controllo di versione). Potrei essere in grado di farlo solo da quello che hai scritto però - dopo aver letto no l'opzione -p il problema con la directory ha più senso: http://linux.die.net/man/1/patch Cheers! –

7

risposta di Micholson sopra funziona. Ma per rattoppare la gemma reale per tutte le applicazioni Rails (vedi il mio commento sulla sua risposta) questo ha funzionato:

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 

ho scoperto che si può anche invertire una patch con -R se qualcosa va storto. Sono sorpreso che questo processo non sia stato meglio documentato da qualche parte. Spero che questo si presenti nelle ricerche di Google per persone nuove alle patch come me.

+1

È arrivato per me! E ti ringrazio. –