Rails生产环境资产管道预编译结果在不同的机器上有所不同

时间:2015-09-24 03:17:20

标签: ruby-on-rails hash asset-pipeline

我尝试在生产中部署我的应用程序,当使用带有命令的资产管道" RAILS_ENV =生产rake资产:预编译",我发现哈希值与我本地预编译中的哈希值不同(但是相同的机器编译结果是相同的),例如:

生产:login-23ec3a8268b84dd41a8247f0152e9263.png

local:login-1fdc804afc03e64346d254c5fbd1045c.png

但代码库都是一样的。然后我尝试在不同的机器上预编译它,结果都是不同的。

有人可以帮助我或指出我有什么错误。非常感谢。

更新

调试后,我发现绝对路径是否相同,不同的机器可以编译出相同的哈希值:例如:

local / Users / user / MyApp:login-1fdc804afc03e64346d254c5fbd1045c.png

remote / Users / user / MyApp:login-1fdc804afc03e64346d254c5fbd1045c.png

但我想要的是编译后的资产哈希值与绝对路径

无关

最后我弄清楚了:

我使用angular-rails-templates-0.2.0,它有一个默认配置:docs

我还没有修改此配置。这个lib寄存器修改了Rails.application.assets.version(这是计算所有资产' hash的关键),而它在MD5中使用rails绝对路径计算这个版本,这就是为什么相同的路径机器会得到的原因相同的编译资产。

解决方案:在application.rb中添加默认配置: config.angular_templates.inside_paths = [' app / assets']

1 个答案:

答案 0 :(得分:0)

您的预编译命令是什么? 您应该明确地附加目标环境,如下所示。

rake assets:precompile RAILS_ENV=production