2013-07-04 15 views
8

Ho recentemente provato ad aggiornare la mia app Rails 3.2.13 alla nuova versione 4.0.0 e ho provato a distribuirla su Heroku. Sfortunatamente, nonostante il successivo this guide, le risorse sembrano non essere ancora precompilate correttamente. Naturalmente, ho già aggiunto la gemma rails_12factor e ho anche fatto un paio di cose per aggiornare correttamente l'app alla 4.0.0. Funziona molto bene in modalità sviluppo e tutti i miei test sono ancora in corso. Tuttavia, continua a non visualizzare le risorse in Heroku.Rails 4 asset non sono ancora precompilati in Heroku nonostante l'installazione della gemma rails_12factor

Una cosa che ho notato l'esecuzione heroku run ls public/assets è che Heroku era effettivamente in grado di precompilare i beni da app/assets e facendo un comando cat su quei file visualizzerà la versione compilata dei beni. Tuttavia, se accedo al file sul browser, ottengo sempre un 404.

Heroku è effettivamente pronto per Rails 4?

EDIT:

Ecco una lista delle cose che ho fatto per l'aggiornamento da 3.2.13 a 4:

  • Rimosso gruppo di attività in quanto non è più utilizzata in Rails 4

  • Versione di aggiornamento di binari da 3.2.13 a 4.0.0

  • Rimuovere richiede la linea di active_resource/railties da application.rb dal active_resource stato rimosso come una dipendenza da rotaie

  • Aggiorna sass-rail e caffè-rotaie per utilizzare i loro rami anagrafici corrispondenti perché utilizza railties 4.0.0.rc2 anziché 4.0.0 come la dipendenza

  • Aggiorna versione di escogitare per 3.0.0.rc

  • Aggiungi protected_attributes per facilitare la transizione a Rails 4 senza dover passare per strong_parameters ancora

  • Cambiare le configurazioni dell'ambiente per aggiungere config.eagerload e rimuovere config.whiny_nils per rimuovere gli avvisi di deprecazione.

  • Cambio sintassi della conferma() per rimuovere warning di deprecazione

  • sintassi Variazione hash dai razzi hash al 1.9.3 sintassi

  • Rimuovere auto spiegare config per rimuovere warning di deprecazione

  • Aggiungi directory bin utilizzando rotaie rake: aggiornamento: bin

  • Aggiungi rails_12factor gemma di essere in grado di ospitare a Heroku

  • Aggiungi la versione rubino in Gemfile per heroku

EDIT 2

Credo che sia anche opportuno ricordare che non c'era eventuali errori nel Heroku durante la precompilazione e dice in realtà che è riuscito a precompilare il patrimonio ed è per questo che è strano che non ha funzionato.

+1

Hai spostato le gemme dal gruppo 'assets' in Gemfile? Questo gruppo non è più utilizzato in Rails 4. –

+1

Ok, un'altra ipotesi selvaggia. Non hai risorse compilate in pubblico/beni/produzione nel repository git? (chiedendo domande stupide perché sembra che tu abbia curato tutto il resto) –

+1

Stai dicendo che dovrei precompilare le risorse localmente e farlo controllare in git? Heroku non suppone precompilare le risorse al momento del dispiegamento? Almeno, questo è quello che ha fatto per me quando ero ancora in 3.2.13. –

risposta

1

Prova a spostare tutte le gemme dal gruppo assets in Gemfile all'ambito principale. Il gruppo di asset non è più utilizzato in Rails 4 e potrebbe essere la causa del problema.

+0

Sì, l'ho già fatto. In realtà è una delle prime cose elencate nella guida all'aggiornamento. –

+0

solo chiedendo! ;) –

-2

Nel file production.rb, assicurarsi di disporre della linea config.assets.compile = true. Questo ha risolto il problema per me.

+1

Ciò significa che le risorse verranno compilate su richiesta e non fare uso della precompilazione. Saranno memorizzati nella cache, ma non è così veloce come la precompilazione. – joshs

0

Utilizzando una versione meno lavorato per me

gem 'twitter-bootstrap-rails', '= 2.2.6' 
gem 'less-rails', '2.3.3' 
0

mi imbatto nello stesso problema. Ora li precompilo localmente

bundle exec rake assets:precompile RAILS_ENV=production 

e aggiungerli al repository e inviarli a heroku.

Problemi correlati