2012-03-19 6 views
18

Il mio sito Web funzionava e Heroku precompilava le risorse e tutto il resto. Ora, apparentemente dal nulla, ho cominciato ad avere questo messaggio Deploy:"rastrello interrotto! Livello di stack troppo profondo" durante l'implementazione su Heroku

Preparing app for Rails asset pipeline 
Running: rake assets:precompile 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets/icons 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets/icons 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
(in /tmp/build_31cexir1p9pwn) 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
mkdir -p /tmp/build_31cexir1p9pwn/public/assets 
rake aborted! 
stack level too deep 
(in /tmp/build_31cexir1p9pwn/app/assets/stylesheets/theme.css.scss) 

(See full trace by running task with --trace) 
Precompiling assets failed, enabling runtime asset compilation 
Injecting rails31_enable_runtime_asset_compilation 

Non può precompilare il mio file css.

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 

Ecco il mio file di application.rb

# 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' 

Ed ecco il mio file production.rb

# Code is not reloaded between requests 
config.cache_classes = true 

# 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 

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

+0

sarebbe possibile elencare questo file, theme.css.scss. Sembra overflow con la pipeline di asset –

+1

L'errore "livello di stack troppo profondo" è, in effetti, un caso di esaurimento della memoria dell'applicazione. Spesso è il risultato di programmi che utilizzano molta ricorsione (funzioni che si chiamano) e cose come i parser (da SASS a CSS, da CoffeeScript a JS, da ERB a HTML) in genere utilizzano la ricorsione. Come soluzione, prova a precompilare le risorse prima della distribuzione: potresti avere più memoria sul computer locale rispetto all'istanza di Heroku. –

+0

Questo è un bug piuttosto serio. Lo hai segnalato su github? – jcollum

risposta

30

Ero davvero disperata quindi ho asked another question. Apparentemente questo è causato da sass e downgrade a sass-rails v3.1.4 v3.2.5 lo farà funzionare.

+0

Questo ha funzionato anche per me. Sono un po 'strano che questo sia stato un problema per così tanto tempo e che il master sass-rail provochi ancora questo problema. Vorrei sapere quali serie di eventi l'hanno causato: - \ –

0

downgrade a sass-rail v3.1.4 lavorato per me :)

0

aggiornamento a Sass v3.2.12 ha fatto il trucco per me

ma nel complesso, sembra che il problema è stato risolto in tutte le versioni attuali , fai un aggiornamento di gruppo e dovresti essere bravo.

1

Per le versioni ruby ​​2.3.0 o precedenti sono presenti la seguente riga nel file application.rb per Rails. Ma 2.4.0 o superiore hanno implementato quelli come automatizzati.

Bundler.require(*Rails.groups)

Cambiare la versione 2.3.0 rubino ha fatto il trucco. Questo mi ha salvato la giornata.