2012-03-19 10 views
18

Mi sitio web solía funcionar y Heroku precompilaba los activos y todo. Ahora, aparentemente de la nada, empecé a hacer llegar este mensaje a desplegar:"rake abortado! Nivel de pila demasiado profundo" durante la implementación en 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 

No puede precompilar mi archivo css.

estoy usando la pila de cedro y este es mi 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 

Aquí está mi archivo 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' 

y aquí está mi archivo 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 

Ahora todos mis enlaces a las imágenes están rotos (estoy usando image-url() en mi archivo css). ¿Cuál podría ser el problema y cómo lo soluciono?

+0

podría listar este archivo, theme.css.scss. Parece desbordamiento con su cartera de activos –

+1

El error "nivel de pila demasiado profundo" es, en efecto, un caso en el que la aplicación se queda sin memoria. A menudo es el resultado de programas que usan mucha recursividad (funciones que se autodenominan), y cosas como los analizadores sintácticos (SASS a CSS, CoffeeScript a JS, ERB a HTML) suelen usar recursividad. Como solución alternativa, intente precompilar los activos antes de implementarlos: es posible que tenga más memoria en su máquina local que en la instancia de Heroku. –

+0

Este es un error bastante serio. ¿Lo informaste en github? – jcollum

Respuesta

30

Estaba realmente desesperado, así que asked another question. Al parecer, esto es causado por sass y degradación a sass-rails v3.1.4 v3.2.5 hará que funcione.

+0

Esto funcionó para mí también. Estoy un poco desconcertada de que esto haya sido un problema por tanto tiempo y que el maestro de los radares todavía causa este problema. Desearía saber qué serie de eventos lo causó: - \ –

0

la degradación hasta sass-carriles v3.1.4 trabajado para mí :)

0

actualización a Sass v3.2.12 hizo el truco para mí

pero en general, parece que el problema se soluciona en todas las versiones actuales , solo haz una actualización de paquete y deberías ser bueno.

1

Para ruby ​​2.3.0 o versiones inferiores tienen la siguiente línea en application.rb file for Rails. Pero 2.4.0 o superior los han implementado como automatizados.

Bundler.require(*Rails.groups)

Cambio de la versión 2.3.0 de rubí hizo el truco. Este me salvó el día.

Cuestiones relacionadas