在将sprockets-rails升级到3.0.0之后,Rails.application.assets在Heroku上为Nil

时间:2015-12-20 11:58:21

标签: ruby-on-rails heroku

我在本地控制台中检查此命令Rails.application.assets是否有效,但在heroku控制台中它返回Nil

但是当我回滚使用sprockets-rails 2.3.3并在heroku控制台中检查Rails.application.assets时它会返回值。

发生了什么事?

3 个答案:

答案 0 :(得分:3)

这是sprockets-rails 3更改的结果。请参阅问题https://github.com/rails/sprockets-rails/issues/237

您现在可以通过在/config/environments/production.rb中设置config.assets.compile = true来解决此问题

答案 1 :(得分:0)

您可能需要更改部分代码以与sprockets-rails 3兼容,请阅读https://github.com/rails/sprockets/blob/master/UPGRADING.md

答案 2 :(得分:0)

我通过添加这样的应用程序助手来解决了这个问题:

$oldarray

然后我可以通过查找路径并运行

来检查图像是否存在
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

在我的应用中,通常路径仅是图像文件名,除非图像位于图像目录内的子文件夹中。