我花了一整天时间试图找出这个问题,但没有任何积极的结果。 当我加载我的网站时,没有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
- &gt;文件生成到public/assets
目录。
但仍然 - 生产中没有资产。
我已经不知道在配置文件中要更改什么,在生产服务器上仍然是相同的结果。
每一位帮助都将受到热烈欢迎!
修改
我刚刚在控制台中注意到图像已正确加载(我可以加载http://website.com/assets/social_icons/facebook_ico.png
),但不能加载CSS + JS(http://IP/assets/application-3b6ba7703e465259e4e7ebee17c5ea1e.js
404找不到 - 对于.css也是如此)
答案 0 :(得分:0)
编译资产后,您是否尝试重新启动网络服务器?
权限是否设置正确(chmod 755 . -R
)?
另外,请检查您的网络服务器配置是否指向 app_root / public ,而不只是 app_root
EDIT1:
检查您是否可以直接加载网址。另外,验证呈现的页面是否正确显示了缓存的URL。
如果其中一个失败,请尝试强制编译生产环境
rake assets:precompile RAILS_ENV=production
EDIT2: 如果无效则尝试回滚到生产的默认资产配置:
# 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://website.com/assets/social_icons/facebook_ico.png),但不是 CSS + JS (http://****/assets/application-3b6ba7703e465259e4e7ebee17c5ea1e.js 404 找不到 - 对于.css也一样)
这也意味着你实际上并没有编译资产。如果你是,你需要加载facebook_ico.png并附加名称的哈希