rails 3.1.0 ActionView::Template::Error (application.css isn't precompiled)

前端 未结 14 1602
自闭症患者
自闭症患者 2020-11-27 09:02

I made a basic rails app with a simple pages controller with an index function and when I load the page I get:

ActionView::Template::Error (application.css i         


        
相关标签:
14条回答
  • 2020-11-27 09:33

    Here's the quick fix:

    If you're using capistrano do this add this to your deploy.rb:

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

    cap deploy

    0 讨论(0)
  • 2020-11-27 09:35

    By default Rails assumes that you have your files precompiled in the production environment, if you want use live compiling (compile your assets during runtime) in production you must set the config.assets.compile to true.

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

    You can use this option to fallback to Sprockets when you are using precompiled assets but there are any missing precompiled files.

    If config.assets.compile option is set to false and there are missing precompiled files you will get an "AssetNoPrecompiledError" indicating the name of the missing file.

    0 讨论(0)
  • 2020-11-27 09:38

    On heroku server (readonly filesystem), If you want runtime compilation of css (its not recommended but you can do it), make sure you have done settings like below -

    # 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
    
    0 讨论(0)
  • 2020-11-27 09:39

    For all those who are reading this but do not have problem with application.css and instead with their custom CSS classes e.g. admin.css, base.css etc.

    Solution is to use as mentioned

    bundle exec rake assets:precompile
    

    And in stylesheets references just reference application.css

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

    Since assets pipeline will precompile all of your stylesheets in application.css. This also happens in development so using any other references is wrong when using assets pipeline.

    0 讨论(0)
  • 2020-11-27 09:39

    I also had this issue, where trying to run in production without precompiling it would still throw not-precompiled errors. I had to change which line was commented 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)
    
    0 讨论(0)
  • 2020-11-27 09:40

    You will get better performance in production if you set config.assets.compile to false in production.rb and precompile your assets. You can precompile with this rake task:

    bundle exec rake assets:precompile
    

    If you are using Capistrano, version 2.8.0 has a recipe to handle this at deploy time. For more info, see the "In Production" section of the Asset Pipeline Guide: http://guides.rubyonrails.org/asset_pipeline.html

    0 讨论(0)
提交回复
热议问题