Domanda

Mi piacerebbe applicare la patch action_mailer menzionati in questo thread, ma non ho mai applicato una patch prima e io non sono sicuro di come questi lavori: https://rails.lighthouseapp.com/projects/8994/tickets/2263

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

presumo ho bisogno di andare a quella directory ed eseguire il comando patch ... qualcosa di simile?

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"

È stato utile?

Soluzione

In genere non si vuole correggere la fonte gemma stessa. È probabile che si voglia congelare le gemme in ${RAILS_ROOT}/vendor/rails, e quindi applicare la patch a livello locale.

Dal tuo $ {} RAILS_ROOT dir, scaricare tutti i vostri 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

Altri suggerimenti

La 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 questo processo non era meglio documentato da qualche parte. Speriamo che questo si trasformerà in ricerche di Google per le persone nuove per l'applicazione di patch come me.

Ecco un guscio di one-liner per patching una gemma:

  

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)

Un altro esempio utilizzando gist gemma:

  

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top