2012-03-20 12 views
16

Il mio sito Web funzionava e Heroku precompilava le risorse e tutto il resto. Ora, apparentemente dal nulla, ho iniziato a prendere rake aborted! stack level too deep per la distribuzione.attività rake: precompilato non funziona su heroku

Cancellare la linea *= require_tree . dal mio file application.css sembra risolvere il stack level too deep ma tanto sono questo:

Running: rake assets:precompile 
(in /tmp/build_b8o2t4k8frce) 
/usr/local/bin/ruby /tmp/build_b8o2t4k8frce/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets 
(in /tmp/build_b8o2t4k8frce) 

Tutti i miei link alle immagini sono rotti (sto usando immagini-url() in il mio file css). Quale potrebbe essere il problema e come lo risolvo?

sto usando pila di cedro e questo è il mio Gemfile:

gem 'rails', '3.1.0' 
gem 'rake', '0.8.7' 
gem 'devise' 

group :production do 
    gem 'pg' 
    gem 'thin' 
end 

group :assets do 
    gem 'sass-rails', " ~> 3.1.0" 
    gem 'coffee-rails', "~> 3.1.0" 
    gem 'uglifier' 
end 

Ed ecco le versioni utilizzate da Heroku:

Using rake (0.8.7) 
Using rails (3.1.0) 
Using sass (3.1.15) 
Using sass-rails (3.1.6) 

Ecco il mio file di application.rb

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    Bundler.require *Rails.groups(:assets => %w(development test)) 
    # If you want your assets lazily compiled in production, use this line 
    # Bundler.require(:default, :assets, Rails.env) 
end 

module App 
    class Application < Rails::Application 

    # Enable the asset pipeline 
    config.assets.enabled = true 

    # Version of your assets, change this if you want to expire all your assets. 
    config.assets.version = '1.0' 
    end 
end 

Ed ecco il mio file production.rb

# Full error reports are disabled and caching is turned on 
config.consider_all_requests_local  = false 
config.action_controller.perform_caching = true 

# Enable Rails's static asset server (Apache or nginx will not need this) 
config.serve_static_assets = true 

# Set expire header of 30 days for static files 
config.static_cache_control = "public, max-age=2592000" 

# Allow JavaScript and CSS compression 
config.assets.compress = true 

# Compress JavaScript by removing whitespace, shortening variable names, ... 
config.assets.js_compressor = :uglifier 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 

# Generate digests for assets URLs 
config.assets.digest = true 

risposta

34

Ho avuto un problema simile e ho trovato la risposta qui: https://github.com/rails/sass-rails/issues/78. Fondamentalmente, downgrade a sass-rails v3.1.4. Spero che questo aiuti

+5

Wow, è tutto! Questo l'ha risolto! Il fatto è che sono un principiante e ho pensato che questa riga 'gem 'sass-rails'," ~> 3.1.0 "' significava che la mia versione gemma era bloccata ma apparentemente quella hash racquish (o qualunque sia il suo nome) facciamo la gemma essere aggiornata.E forse è quello che è successo, forse internamente Heroku ha cambiato qualcosa e all'improvviso la mia app ha smesso di funzionare. Cose davvero strane che mi hanno fatto perdere un'intera giornata per niente. Per chiunque potrebbe finire qui, la soluzione era quella di cambiare quella linea in 'gem 'sass-rails'," 3.1.4 "'. – Ashitaka

+0

Grazie - BIG aiuto - stesso problema, dal nulla. Quella era l'ultima cosa di cui avevo bisogno di vedere oggi, è stata una spinta a non riuscire. – jpwynn

+0

Per favore, prendi il mio upvote !! Grazie! – hajpoj

1

Non dovresti eliminare questo *= require tree . da application.css, perché carica tutti gli stili. basta aggiungere e configurare il file config/production.rb in questo modo:

config.assets.precompile = %w{application.js} 

ed eseguire RAILS_ENV asset = produzione rastrello: precompilare

EDIT tenta di utilizzare questa configurazione:

config.assets.digest = true 
+0

Sì, questo dovrebbe funzionare con 'require_tree', ma se lo aggiungo, ottengo il' rake abortito! impilare il livello troppo in profondità'. Non ho idea di come sia successo – Ashitaka

+0

Scusate, ho dimenticato di copiare quella linea specifica, stavo già usando digest. Ho trovato una soluzione alternativa anche se non mi piace molto – Ashitaka

0

Apparentemente sass ha smesso di funzionare e ho perso la pazienza quindi ho deciso di non usarlo più. Invece di fare questo:

#theme.css.scss 
background-image:image-url('image.png'); 

Ora sono semplicemente utilizzando un file erb:

#theme.css.erb 
background-image:url(<%= asset_path 'image.png' %>); 

Ho appena perso un giorno intero a causa di questo e non ho idea del perché, perché stava lavorando bene proprio ieri . Se qualcuno sa cosa ha causato questo e come posso usare di nuovo sass, per favore commenta.

+0

Ho notato che in alcuni ambienti usando sass ottengo errori se non c'è spazio tra ":" e il valore nelle mie affermazioni così invece di scrivere qualcosa come "background-image: image-url ('immagine.png') "; scrivi "background-image: image-url ('image.png')" [NOTA LO SPAZIO DOPO IL ':'] –

Problemi correlati