Rails 3.1已经改变了它处理资产pipe道的方式,并且在部署到生产环境时引发了问题。
我正在使用Apache和乘客,这似乎工作正常。
我的生产是这样设置的(现在)。
# 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
我运行rake资源:在Ubuntu上预编译并启动服务器。 没事了。 我的图像没有加载。
传说中的“我在这个URL找不到图片”框。
我运行rake资源:在CentOS上预编译并启动服务器。 和…权限错误。
*Error Compiling CSS Asset* Errno::EACCESS: Permission Denied - [app path]/tmp/cache/assets/E95 [path to RVM Ruby]/fileutils.rb:243:in 'mkdir'
我不能让它变好。 任何帮助是极大的赞赏。 谢谢!
这个解决scheme每次都为我工作:
首先清理你的资产
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
第六,通过运行此命令,对新创build的资产进行不限制的权限
chmod -R 777公共/资产
第七,庆祝!
这是一个简单的权限问题。 赋予服务器/守护进程递归地在[app_path] / tmp中创建文件的权利。
假设你的服务器进程和www-data
用户一起运行,你可以这样做:
cd APP_PATH chmod -R u+w tmp
如果该目录不属于该用户,则必须更改所有权:
chown -R www-data tmp
尝试通过sudo创建public/assets
或尝试执行rvmsudo rake assets:precompile
– 实质上,它无法在您的服务器上创建目录 – 因此出现错误。
在Windows 8上:
您更新的解决方案不适合我。 我在轨道4.2和CSS和JS只有当我设置config.serve_static_files =真(这不是建议,但这是唯一的办法,我可以在这里工作)。