rails 3.1.0 ActionView :: Template :: Error (application.css no está precomstackdo)

Hice una aplicación básica de Rails con un controlador de páginas simple con una función de índice y cuando cargo la página obtengo:

ActionView::Template::Error (application.css isn't precompiled): 2:  3:  4: Demo 5:  6:  7:  8:  app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__43625033_88530400' 

Gemfile

 source 'http://rubygems.org' gem 'rails', '3.1.0' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' gem 'execjs' gem 'therubyracer' # Gems used only for assets and not required # in production environments by default. group :assets do gem 'sass-rails', " ~> 3.1.0" gem 'coffee-rails', "~> 3.1.0" gem 'uglifier' end gem 'jquery-rails' # Use unicorn as the web server # gem 'unicorn' # Deploy with Capistrano # gem 'capistrano' # To use debugger # gem 'ruby-debug19', :require => 'ruby-debug' group :test do # Pretty printed test output gem 'turn', :require => false end 

De forma predeterminada, Rails asume que tiene sus archivos precomstackdos en el entorno de producción; si desea utilizar la comstackción en vivo (comstackr sus activos durante el tiempo de ejecución) en producción, debe establecer config.assets.compile en true .

 # config/environments/production.rb ... config.assets.compile = true ... 

Puede usar esta opción para retroceder a Sprockets cuando usa activos precomstackdos, pero faltan archivos precomstackdos.

Si la opción config.assets.compile está configurada como falsa y faltan archivos precomstackdos, obtendrá un “AssetNoPrecompiledError” que indica el nombre del archivo faltante.

Obtendrá un mejor rendimiento en producción si establece config.assets.compile en false en production.rb y precomstack sus activos. Puede precomstackr con esta tarea de rake:

 bundle exec rake assets:precompile 

Si está utilizando Capistrano, la versión 2.8.0 tiene una receta para manejar esto en el momento de la implementación. Para obtener más información, consulte la sección “En producción” de la Guía de canalización de activos: http://guides.rubyonrails.org/asset_pipeline.html

De acuerdo, tuve el mismo problema. No quería usar “config.assets.compile = true” – Tuve que agregar todos mis archivos .css a la lista en config / environments / production.rb:

 config.assets.precompile += %w( carts.css ) 

Luego tuve que crear (y luego eliminar) tmp / restart.txt

Siempre utilicé el helper stylesheet_link_tag, así que encontré todos los archivos css adicionales que necesitaba agregar:

 find . \( -type f -o -type l \) -exec grep stylesheet_link_tag {} /dev/null \; 

Una solución rápida para el usuario capistrano es poner esta línea en Capfile

 # Uncomment if you are using Rails' asset pipeline load 'deploy/assets' 

Para todos aquellos que están leyendo esto pero no tienen problemas con application.css y en su lugar con sus clases de CSS personalizadas, por ejemplo, base.css , base.css , etc.

La solución es usar como se menciona

 bundle exec rake assets:precompile 

Y en las hojas de estilo, las referencias solo hacen referencia a application.css

 < %= stylesheet_link_tag "application", :media => "all" %> 

Dado que el inventario de activos precomstackrá todas sus hojas de estilo en application.css. Esto también ocurre en el desarrollo, por lo que utilizar cualquier otra referencia es incorrecto cuando se utiliza la canalización de activos.

Estaba teniendo exactamente el mismo error en mi entorno de desarrollo. Al final, todo lo que tenía que hacer para solucionarlo era agregar:

 config.assets.manifest = Rails.root.join("public/assets") 

a mi archivo config / environments / development.rb y lo arregló. Mi configuración final en el desarrollo relacionado con los activos se ve así:

 config.assets.compress = false config.assets.precompile += %w[bootstrap-alerts.js] #Lots of other space separated files config.assets.compile = false config.assets.digest = true config.assets.manifest = Rails.root.join("public/assets") config.assets.debug = true 

También tuve este problema, donde tratar de ejecutar en producción sin precomstackr aún arrojaría errores no precomstackdos. Tuve que cambiar qué línea se comentó application.rb:

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

Aquí está la solución rápida:

Si está usando capistrano, agregue esto a su deploy.rb:

 after 'deploy:update_code' do run "cd #{release_path}; RAILS_ENV=production rake assets:precompile" end 

despliegue de tapa

Me encontré con este mensaje de error hoy y quería publicar la resolución en mi caso particular. Resultó que mi problema era que a uno de mis archivos css le faltaba un corchete de cierre y esto estaba causando que el archivo no se comstackra. Puede ser más difícil notar esto si tiene un proceso automatizado que configura todo (incluida la precomstackción de activos) para su entorno de producción.

Después de todo lo demás falló …

Mi solución fue cambiar el archivo de diseño de

 = stylesheet_link_tag "reset-min", 'application' 

a

 = stylesheet_link_tag 'application' 

¡Y funcionó! (Puede poner el archivo de restablecimiento dentro del manifiesto).

Solo otra forma de arreglar esto en Heroku: Asegúrate de que tu Rakefile esté comprometido y empujado.

En el servidor heroku (sistema de archivos de solo lectura), si desea comstackr en tiempo de ejecución de css (no es recomendable, pero puede hacerlo), asegúrese de haber realizado las configuraciones siguientes:

 # inside config/application.rb config.assets.enabled = true config.assets.prefix = Rails.root.join('tmp/assets').to_s # If you are using sass then keep gem outside of asset group gem 'sass-rails', '3.1.4' # inside config/environments/production.rb config.assets.compile = true 

Si crees que seguiste todo bien pero aún tiene mala suerte, solo asegúrate de que / capistrano ejecutes touch tmp / restart.txt o equivalente al final. Estaba en la lista desafortunada, pero ahora 🙂

Probablemente tengas un syntax error en el CSS que estás usando.

Ejecuta este comando

 $ bundle exec rake assets:precompile RAILS_ENV=development --trace 

Dará la excepción, arregló eso y todo está hecho.

Gracias