Rails 3.2.13 – 资产不在生产中显示

我花了一整天的时间试图找出这个问题,但没有任何积极的结果。 当我加载我的网站时,没有CSS,图像或工作的JavaScript。

该应用程序在Rails 3.2.13和Capistrano 2上运行。

这是我的设置:

配置/环境/ production.rb

 Appname::Application.configure do config.cache_classes = true config.consider_all_requests_local = false config.action_controller.perform_caching = true #config.serve_static_assets = false config.serve_static_assets = true config.assets.compress = true config.assets.compile = true config.assets.precompile = ['*.js', 'application.css', 'styles.css.scss', '*.css.erb'] config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.svg *.woff *.ttf *.ico) config.assets.digest = true config.cache_store = :memory_store config.i18n.fallbacks = true config.active_support.deprecation = :notify end 

application.rb中

 require File.expand_path('../boot', __FILE__) require 'rails/all' if defined?(Bundler) Bundler.require(*Rails.groups(:assets => %w(development test))) end module Apname class Application < Rails::Application config.encoding = "utf-8" config.filter_parameters += [:password] config.active_support.escape_html_entities_in_json = true config.active_record.whitelist_attributes = true config.assets.enabled = true config.assets.paths << "#{Rails.root}/app/assets/fonts" config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/ config.assets.version = '1.0' config.assets.initialize_on_precompile = false end end 

我运行本地bundle exec rake assets:precompile – >文件生成到public/assets目录。

但仍然 – 生产中没有资产。

我已经不知道在配置文件中要更改什么,在生产服务器上仍然是相同的结果。

每一个帮助都将受到热烈的赞赏!

编辑:

我刚刚在控制台中注意到图像已正确加载(我可以加载http://sofzh.miximages.com/ruby-on-rails/facebook_ico.png ),但不能加载CSS + JS( http://IP/assets/application-3b6ba7703e465259e4e7ebee17c5ea1e.js 404 NOT FOUND – .css相同)

编译资产后是否尝试重新启动Web服务器?

权限是否设置正确( chmod 755 . -R )?

另外,请检查您的网络服务器配置是否指向app_root / public而不仅仅是app_root

EDIT1:

检查您是否可以直接加载url。 另外,validation呈现的页面是否正确显示了缓存的URL。

如果其中一个失败,请尝试强制编译生产环境

 rake assets:precompile RAILS_ENV=production 

编辑2:如果没有任何作用,请尝试回滚到默认资产配置进行生产:

  # Disable Rails's static asset server (Apache or nginx will already do this). config.serve_static_assets = false # Compress JavaScripts and CSS. config.assets.js_compressor = :uglifier # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. config.assets.compile = true # Generate digests for assets URLs. config.assets.digest = true # Version of your assets, change this if you want to expire all your assets. config.assets.version = '1.0' 

代替:

  #config.serve_static_assets = false config.serve_static_assets = true config.assets.compress = true config.assets.compile = true config.assets.precompile = ['*.js', 'application.css', 'styles.css.scss', '*.css.erb'] config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.svg *.woff *.ttf *.ico) config.assets.digest = true 

编辑3:

编辑:

我刚刚在控制台中注意到图像加载正确(我可以加载http://sofzh.miximages.com/ruby-on-rails/facebook_ico.png ),但不能加载CSS + JS(http:// **** / assets / application -3b6ba7703e465259e4e7ebee17c5ea1e.js 404 NOT FOUND – 相同的.css)

这也意味着你实际上并没有编译资产。 如果你是,你需要加载facebook_ico.png并附加名称的哈希值