我将服务器切换到生产状态,我无法加载任何图像。这一切都在开发模式下工作正常但是当我切换到生产时它都停止工作我启用了server_static_assets但仍然无效。对此有任何帮助
答案 0 :(得分:25)
以下是您可能遇到的一些问题:
1 - 您的生产配置可能不正确。如果您从早期的3.1版本候选版本开始,并且一直在更新,这种情况尤其可能。对于production.rb,建议的选项在rc4和3.1.0版本之间发生了很大的变化。
确保您的production.rb设置包括:
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs
config.assets.digest = true
2 - 您可能忘记了预编译资产
RAILS_ENV=production rake assets:precompile
3 - 您可能忘记重新启动Web服务器以获取production.rb中的更改。
答案 1 :(得分:1)
请记住在生产环境中运行rake assets:precompile
。
如果您需要使用Capistrano进行部署,则可以使用此配方:
before "deploy:symlink", "assets:precompile"
namespace :assets do
desc "Compile assets"
task :precompile, :roles => :app do
run "cd #{release_path} && rake RAILS_ENV=#{rails_env} assets:precompile"
end
end
答案 2 :(得分:1)
如果您要升级到Rails 4或正在生产中使用它,并且正在从css加载图像,那么:
而不是
background-image: url('some_image.jpg');
DO
background-image: image-url('some_image.jpg');
请参阅http://guides.rubyonrails.org/asset_pipeline.html#css-and-sass以获取参考资料