rails – 在生产模式中找不到application.css资产

前端之家收集整理的这篇文章主要介绍了rails – 在生产模式中找不到application.css资产前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在升级应用程序以使用资产管道.

我已经将css资源编译成应用程序的css文件,但是当我以生产模式运行应用程序时,它们没有被找到

  1. RAILS_ENV=production bundle exec rails s

我访问任何页面,我从数据库中获得正确的输出,但没有样式,日志显示

  1. ActionController::RoutingError (No route matches [GET]
  2. "/assets/default.scss-1a27c...f07c.css"):

即使该文件存在于公共/资产中

  1. $ls public/assets/def*
  2. public/assets/default.scss-1a27c...f07c.css public/assets/default.scss.css
  3. public/assets/default.scss-1a27c...f07c.css.gz public/assets/default.scss.css.gz

我需要改变什么才能让服务器找到资产文件

我的其他.css文件也是一样.他们用指纹编辑成公开/资产,但没有找到.

页面来源显示

  1. <link href="/assets/default.scss-1a27c...f07c.css"
  2. media="screen" rel="stylesheet" type="text/css" />

rails(haml)源是= stylesheet_link_tag’default.scss.css’

public.assets curently包含以下文件.

  1. $ls public/assets/def*
  2. public/assets/default.scss-1a27c22229b7b522066181f27af4f07c.css
  3. public/assets/default.scss-1a27c22229b7b522066181f27af4f07c.css.gz
  4. public/assets/default.scss.css
  5. public/assets/default.scss.css.gz

application.rb有

  1. $cat config/application.rb
  2. require File.expand_path('../boot',__FILE__)
  3.  
  4. # Pick the frameworks you want:
  5. require "active_record/railtie"
  6. require "action_controller/railtie"
  7. require "action_mailer/railtie"
  8. require "active_resource/railtie"
  9. require "sprockets/railtie"
  10. # require "rails/test_unit/railtie"
  11.  
  12. if defined?(Bundler)
  13. # If you precompile assets before deploying to production,use this line
  14. Bundler.require(*Rails.groups(:assets => %w(development test)))
  15. # If you want your assets lazily compiled in production,use this line
  16. # Bundler.require(:default,:assets,Rails.env)
  17. end
  18.  
  19. module Linker
  20. class Application < Rails::Application
  21. config.encoding = "utf-8"
  22. config.filter_parameters += [:password]
  23. config.assets.enabled = true
  24. config.assets.initialize_on_precompile = false # For Heroku
  25. config.assets.version = '1.0'
  26. end
  27. end

config / environments / production有:

  1. $cat config/environments/production.rb
  2. Linker::Application.configure do
  3. config.consider_all_requests_local = false
  4. config.action_controller.perform_caching = true
  5. config.assets.precompile += ['default.scss.css','main.css','jquery-ui-1.8.22.custom.css']
  6. config.serve_static_assets = false
  7. config.assets.compress = true
  8. config.assets.compile = false
  9. config.assets.digest = true
  10. config.log_level = :debug
  11. config.i18n.fallbacks = true
  12. config.active_support.deprecation = :notify
  13. end

这似乎正在发生在所有资产,例如

  1. Started GET "/assets/default.scss-1a27c22229b7b522066181f27af4f07c.css" for 127.0.0.1 at 2014-02-23 10:24:47 -0500
  2. ActionController::RoutingError (No route matches [GET] "/assets/default.scss-1a27c22229b7b522066181f27af4f07c.css"):
  3. Started GET "/assets/main-6864687b4114a1c316e444bd90f233ff.css" for 127.0.0.1 at 2014-02-23 10:24:47 -0500
  4. ActionController::RoutingError (No route matches [GET] "/assets/main-6864687b4114a1c316e444bd90f233ff.css"):
  5. Started GET "/assets/jquery-ui-1.8.22.custom-24319b4b1218846a3fe22a0479ae98b4.css" for 127.0.0.1 at 2014-02-23 10:24:47 -0500
  6. ActionController::RoutingError (No route matches [GET] "/assets/jquery-ui-1.8.22.custom-24319b4b1218846a3fe22a0479ae98b4.css"):
  7. Started GET "/assets/application-fc1d492d730f2a45581a40eac4607db8.js" for 127.0.0.1 at 2014-02-23 10:24:47 -0500
  8. ActionController::RoutingError (No route matches [GET] "/assets/application-fc1d492d730f2a45581a40eac4607db8.js"):
  9. Started GET "/images/link.ico" for 127.0.0.1 at 2014-02-23 10:24:48 -0500
  10. ActionController::RoutingError (No route matches [GET] "/images/link.ico"):

解决方法

默认情况下,Rails不会在公共场合提供资产.看你的production.rb:
  1. config.serve_static_assets = false

改变为真,你很好去. (注意:您不希望在生产中成为真实的,请记住在部署之前将其更改!)

详见Configuring Rails Applications.

猜你在找的CSS相关文章