Rails 3.1 改变了其处理资产管道的方式,导致在部署到生产环境时出现问题。
我正在使用 Apache 和 Passenger,它们似乎运行良好。
我的生产环境设置如下(暂时)。
# congif/environments/production.rb
config.cache_classes = false
config.consider_all_requests_local = true
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
我在Ubuntu上运行rake assets:precompile,然后启动服务器。但是...什么也没有发生。我的所有图片都没有加载。
传说中的“我找不到此URL上的图像”的框。
我在CentOS上运行rake assets:precompile,然后启动服务器。但是...出现了权限错误。
*Error Compiling CSS Asset*
Errno::EACCESS: Permission Denied - [app path]/tmp/cache/assets/E95
[path to RVM Ruby]/fileutils.rb:243:in 'mkdir'
我无法使它移动。非常感谢任何帮助。谢谢!
更新
这个解决方案每次都适用于我:
首先清理你的资源
rm -rf public/assets
和
rake assets:clean RAILS_ENV=production
其次,在 #production.rb 中进行更改
config.assets.compile = false
config.assets.compile = true
第三步,运行预编译你的资产
rake assets:precompile RAILS_ENV=production
第四步,在 #production.rb 文件中更改
config.assets.compile = true
返回
config.assets.compile = false
第五步,通过运行以下命令重新启动您的服务器:
touch tmp/restart.txt
第六步,通过运行以下命令取消限制您新创建的资源的权限:
chmod -R 777 public/assets
第七步,庆祝吧!