2012-07-21 14 views
10

UPDATE:ActionView :: Template :: errore (non è precompilato): su Heroku cedro

Si scopre che a volte results.image era nullo o "", quindi questo stava rompendo l'app perché la pipeline di asset cercavo un'immagine come "" e non trovandola. Al momento non visualizzo un'immagine se non ce n'è una, ma dovrò aggiungere un'immagine di default per le immagini mancanti ... che dovrebbe essere una soluzione più permanente.


ho un certo numero di SO domande su questo numero di Heroku cedro e del bene gasdotto Rails, e ho provato una serie di soluzioni, ma nessuno di loro funziona, ed è probabilmente perché il problema che ho sto avendo una ruga che non ho visto da nessun'altra parte.

La mia app utilizza Rails 3.2.6 e l'ho distribuita sullo stack di cedri di Heroku. È un'app di ricerca di base che ricerca un db postgres collegato tramite websolr, quindi quando carichi l'indice (indice # dell'indice) senza parametri [: q] .present? ottieni una casella di ricerca e questo funziona correttamente. Ma quando ho messo qualcosa nella casella di ricerca e premere invio, e carichi N ° indice di nuovo, ma questa volta cerca di visualizzare i risultati, ottengo:

app[web.1]: Completed 500 Internal Server Error in 440ms 
app[web.1]: 
app[web.1]: ActionView::Template::Error (isn't precompiled): 
app[web.1]:  12:   - @results.each do |result| 
app[web.1]:  13:   %li 
app[web.1]:  14:    %div 
app[web.1]:  15:    = image_tag result.image 
app[web.1]:  16:    %div 
app[web.1]:  17:    = result.title 
app[web.1]:  18:    %div 
app[web.1]: app/views/index/index.html.haml:15:in `block in _app_views_index_index_html_haml___4350601325072829986_32734540' 
app[web.1]: app/views/index/index.html.haml:12:in _app_views_index_index_html_haml___4350601325072829986_32734540' 

Cosa c'è di strano sul mio caso particolare contro altri che ho visto è la seguente riga:

ActionView::Template::Error (isn't precompiled): 

Con tutte le altre domande come questa che ho visto, c'è un file css tra parentesi, ad esempio ("foo.css" non è precompilato), o nel mio caso sembra che dovrebbe essere ("index.css" non è precompilato). Ma qui è solo vuoto!

Questa è la mia distribuzione di staging che sto cercando di mettermi al lavoro, quindi ho provato a eseguire RAILS_ENV = asset rake staging: precompilare (quindi impegnando i risultati, ovviamente), ma questo non lo aggiusta . Ho anche provato a togliere la vista (notare la mancanza di uno stile reale lì). Niente funziona, e sono in perdita. Qualsiasi aiuto sarebbe molto apprezzato.

Per riferimento, ecco la mia Gemfile:

source 'https://rubygems.org' 

gem 'rails', '3.2.6' 
gem 'pg' 
gem 'haml-rails' 
gem 'mongoid' 
gem 'sunspot_rails', '~> 1.3.0' 
gem 'sunspot_solr' 


# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

group :development do 
    gem 'heroku_san' 
    gem 'annotate' 
    gem 'awesome_print' 
end 

group :development, :test do 
    gem 'rspec-rails' 
end 

group :test do 
    gem 'cucumber-rails', :require => false 
    gem 'capybara' 
    gem 'database_cleaner' 
    gem 'spork' 
    gem 'launchy' 
end 

group :staging, :production do 
    gem 'thin' 
end 

Qui ci sono le opzioni di configurazione nel mio config/file di application.rb:

config.encoding = "utf-8" 
config.filter_parameters += [:password] 
config.active_support.escape_html_entities_in_json = true 
config.active_record.whitelist_attributes = true 
config.assets.enabled = true 
config.assets.version = '1.0' 
config.assets.compile = true 

E qui sono le opzioni di configurazione nei miei ambienti/staging.rb file:

config.cache_classes = true 
config.consider_all_requests_local  = false 
config.action_controller.perform_caching = true 
config.serve_static_assets = false 
config.assets.compress = true 
config.assets.compile = true 
config.assets.precompile += ['index.css.scss'] 
config.assets.digest = true 
config.i18n.fallbacks = true 
config.active_support.deprecation = :notify 
+0

appena incontrato lo stesso problema. grazie mille! – rickypai

risposta

16

C'è la possibilità di avere un URL immagine vuoto da qualche parte? Hai qualcosa come CarrierWave installato?

Vedo dal codice image_tag result.image serve - è possibile che sia null?

Questo thread dovrebbe risolverlo: ActionView::Template::Error (isn't precompiled):

+0

Non ho CarrierWave installato, ma è possibile che uno degli URL dell'immagine sia vuoto. Controllerò e pubblicherò i risultati. –

+0

Così eliminando le immagini nul e vuote ha funzionato! Posterò un aggiornamento –

+0

Dolce .... Buoni tempi con l'Asset Pipeline ... – cman77

Problemi correlati