Rails 3.1部署到生产(与Apache和乘客)资产问题

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' 

我不能让它变好。 任何帮助是极大的赞赏。 谢谢!

UPDATE

这个解决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上:

  1. 删除对样式表的引用
  2. 重新开始生产
  3. 使用浏览器转到受影响的页面
  4. 添加样式表引用
  5. 重新开始生产
  6. 为我工作!

您更新的解决方案不适合我。 我在轨道4.2和CSS和JS只有当我设置config.serve_static_files =真(这不是建议,但这是唯一的办法,我可以在这里工作)。