【发布时间】:2015-12-20 11:58:21
【问题描述】:
我在本地控制台中检查此命令Rails.application.assets 它可以工作,但在heroku 控制台中它返回Nil。
但是当我回滚以使用 sprockets-rails 2.3.3 并在 heroku 控制台中检查 Rails.application.assets 时,它会返回值。
发生了什么?
【问题讨论】:
标签: ruby-on-rails heroku
我在本地控制台中检查此命令Rails.application.assets 它可以工作,但在heroku 控制台中它返回Nil。
但是当我回滚以使用 sprockets-rails 2.3.3 并在 heroku 控制台中检查 Rails.application.assets 时,它会返回值。
发生了什么?
【问题讨论】:
标签: ruby-on-rails heroku
这是 sprockets-rails 3 更改的结果。请参阅问题 https://github.com/rails/sprockets-rails/issues/237
您现在可以通过在 /config/environments/production.rb 中设置 config.assets.compile = true 来解决此问题
【讨论】:
您可能需要更改一些代码以与 sprockets-rails 3 兼容,请阅读https://github.com/rails/sprockets/blob/master/UPGRADING.md
【讨论】:
我通过添加这样的应用程序助手解决了这个问题:
def image_exists?(path)
if Rails.env == "development" && Rails.application.assets.find_asset(path)
return true
elsif Rails.env == "production" && Rails.application.assets_manifest.assets[path]
return true
else
return false
end
end
然后我可以通过查找路径并运行来检查图像是否存在
image_exists?(path)
在我的应用程序中,通常路径只是图像文件名,除非图像位于图像目录的子文件夹中。
【讨论】: