2011-09-18 10 views
13

Ho un'azione crea che gestisce una richiesta AJAX. Sulla mia macchina di sviluppo, un modello chiamato create.js.coffee viene elaborato con successo per generare una risposta javascript. Tuttavia, quando mi schiero su Heroku, l'applicazione si lamenta che non è possibile trovare il modello.Che cosa è necessario configurare per Heroku per gestire i modelli basati su CoffeeScript?

ActionView::MissingTemplate (Missing template /expenses/create with {:handlers=>[:erb, :builder], :formats=>[:js, :html], :locale=>[:en, :en]}. Searched in: 
* "/app/app/views" 
* "/app" 
* "/" 
): 

E 'chiaro che il gestore del caffè non è lì per pre-processare il modello * .js.coffee.

Qualcuno può suggerire come posso configurare Heroku per riconoscere ed elaborare questi modelli?

Nota: Heroku sta eseguendo correttamente la preelaborazione dei file CoffeeScript presenti nella pipeline di asset.

+0

Hai mai avuto una risposta a questo? Sto avendo lo stesso problema su Heroku. Ho provato ad aggiungere quanto segue al mio gemfile: 'gem" coffeebeans ",: git => git: //github.com/marcelloma/coffeebeans.git",: ref => "7b106" ' Questa è una richiesta pull alla chicca coffeebeans per consentire .js.coffee in view, che ha funzionato di nuovo localmente ma non su Heroku. – trace

risposta

36

Sono un po 'in ritardo per la festa, ma ecco la mia soluzione, come pubblicato su Github.


Ho appena incontrato un problema in cui il mio file create.js.coffee stava lavorando in development, ma ha smesso di funzionare a production (su Heroku). I registri mostrano che Rails non è nemmeno alla ricerca di un gestore di caffè:

2011-10-14T08:26:29+00:00 app[web.1]: ActionView::MissingTemplate (Missing template page_blocks/create, application/create with {:handlers=>[:erb, :builder, :haml], :formats=>[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=>[:nl, :nl]}. Searched in: 
2011-10-14T08:26:29+00:00 app[web.1]: * "/app/app/views" 
2011-10-14T08:26:29+00:00 app[web.1]:): 

Questa è la (importante) parte del mio Gemfile:

group :assets do 
    gem "sass-rails", "~> 3.1.0" 
    gem "coffee-rails", "~> 3.1.0" 
    gem "uglifier" 
    gem "compass", "~> 0.12.alpha" 
end 

# asset templates 
gem "jquery-rails" 
gem "haml" 

Solo dopo mi sono trasferito coffee-rails al di fuori del gruppo :assets , le cose hanno iniziato a funzionare. Forse sarebbe una buona idea chiarire in qualche modo il readme e forse persino spedire Rails con il plugin coffee-rails posizionato all'esterno del gruppo assets.

+0

Questo ha funzionato perfettamente per me, non esattamente per quello che succede però. –

+0

Grazie Jean, questo è stato davvero utile! – Abramodj

+1

Voglio upvotare tutto su questa pagina. Questo mi stava facendo impazzire! – webdesserts

2

Sono anche più tardi alla festa, ma ho appena avuto lo stesso problema e c'è una spiegazione semplice:

Il gruppo di gemme nel Gemfile "attività" sono solo per lo sviluppo. Heroku non carica queste gemme in produzione perché fa affidamento sulle proprie versioni stabili per la sua pipeline di asset.

Se si utilizza una gemma speciale che sembra correlata alla pipeline di asset ma che in realtà non appartiene a una pipeline standard (ad esempio la gemma "coffeebeans") è necessario conservare tale gemma all'esterno del gruppo "Asset" .

Ho appena testato questa teoria e ha funzionato per me.

0

Su heroku cedar è necessario aggiungere il cestino al percorso come nell'ultima sezione di questa pagina Rails 3.1+ Asset Pipeline on Heroku Cedar. "Se è necessario compilare le risorse in fase di runtime, è necessario aggiungere bin al PATH per accedere al runtime di JavaScript."

+1

Ho bisogno anche di questa funzionalità, ma quando ho controllato la mia configurazione di Heroku, PATH non è attualmente impostato, piuttosto che avere più valori come nella documentazione a cui si fa riferimento. Sai se è normale e l'impostazione di un PATH che ha/bin su di esso farà il trucco? –

Problemi correlati