ruby-on-rails - create - ruby heroku
Activos de Rake: precompilación no funciona en Heroku (3)
Mi sitio web solía estar funcionando y Heroku precompilaba los activos y todo. Ahora, aparentemente de la nada, ¡comencé a rake aborted! stack level too deep
rake aborted! stack level too deep
en el despliegue.
Eliminando la línea *= require_tree .
de mi archivo application.css parece arreglar el stack level too deep
pero luego me sale esto:
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)
Todos mis enlaces a 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?
Estoy usando la pila de cedro y este es mi archivo gem:
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
Y aquí están las versiones utilizadas por heroku:
Using rake (0.8.7)
Using rails (3.1.0)
Using sass (3.1.15)
Using sass-rails (3.1.6)
Aquí está mi archivo 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
Y aquí está mi archivo 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
Al parecer, Sass dejó de funcionar y me quedé sin paciencia, así que decidí no usarlo más. En lugar de hacer esto:
#theme.css.scss
background-image:image-url(''image.png'');
Ahora simplemente estoy usando un archivo erb:
#theme.css.erb
background-image:url(<%= asset_path ''image.png'' %>);
Acabo de perder un día entero por esto y no tengo idea de por qué, porque estaba funcionando bien ayer. Si alguien sabe qué causó esto y cómo puedo usar Sass nuevamente, por favor comente.
No deberías tener que eliminar este *= require tree .
Desde application.css, coz te carga todos los estilos. solo agréguelo, y configure su archivo config/production.rb
esta manera:
config.assets.precompile = %w{application.js}
y ejecute RAILS_ENV = activos de rake de producción: precompilación
EDITAR tratar de usar esta configuración:
config.assets.digest = true
Tuve un problema similar y encontré la respuesta aquí: https://github.com/rails/sass-rails/issues/78 . Básicamente, bajar a sass-rails v3.1.4. Espero que esto ayude