Rails 4资产预编译图像错误

时间:2014-06-03 21:12:40

标签: ruby ruby-on-rails-4 asset-pipeline passenger apache2.2

我有一个正在从Rails 3升级到Rails 4的应用程序,一切都在Windows 7机箱上正常开发。但是,当我尝试在CentOS 5.10虚拟机上测试生产时,图像会被破坏。 Firefox显示“图像无法显示,因为它包含错误”,Chrome只显示为空白。当我使用curl时,我得到以下信息:

  

HTTP / 1.1 200 OK
  日期:2014年6月3日星期二20:36:44 GMT
  服务器:Apache / 2.2.3(CentOS)
  缓存控制:公共,必须重新验证
  ETag:“6fda96e78f0677973258d551e4c1a95e”
  X-Request-Id:6ae8054b-8756-4ab1-906f-10ce13da31ed
  X-Runtime:0.004431
  X-Sendfile:/home/foo/app/assets/images/loading.gif
  X-Powered-By:Phusion Passenger 4.0.41
  内容长度:0
  Last-Modified:Mon,02 Jun 2014 20:38:10 GMT
  状态:200 OK
  连接:关闭
  内容类型:image / gif

正如您所看到的,我在Apache 2.2.3上使用Phusion Passenger 4.0.41。 CentOS是版本5.10。我还仔细检查确实安装了mod_xsendfile,它是。

我已经尝试了他们建议的所有内容on GitHub但没有成功。

我的日志只是说Started GET "asset-files/loading.gif for 10.0.0.187 at 2014-06-03 -0600(注意资产已更改为资产文件,因为Rails 2天中名为资产的资产存在冲突)。

我也预先编译了我的资产。以及删除缓存。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了一个很好的StackOverflow帖子,可以在Images and assets not working in my production server on rails 3.1.0找到。

基本上,我必须在config / enviornments / production.rb文件中添加以下两行:

config.assets.compile = false
config.assets.digest = true

然后我再次编译资产并重新启动应用程序,它现在似乎正在运行。