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并附加名称的哈希值