Rails.application.assets 本身是 Sprockets::Environment 的一个实例 @environment' 是 assets_manifest 的一个变量,属于 Rails.application,像这样:
Rails.application.instance_variable_get('@assets_manifest').instance_variable_get('@environment')
我在使用 RAILS 3.2.15 时遇到了类似的问题,但它是 Rails.application.assets 返回 nil
quiet_assets.rb:4:in
': undefined methodlogger=' for nil:NilClass (NoMethodError)
发出的行是
Rails.application.assets.logger = Logger.new('logger.log')
我回到 Rails 控制台,发现 Rails.application.assets 刚刚返回 nil。
我通过这一步解决了这个问题:
在你的 Gemfile 中包含两个 gem,以防你没有它。宝石“链轮”宝石“链轮导轨”
找到导致问题的文件,并初始化您的资产对象。你也可以把它放在 application.rb 中,在我的例子中,我把它放在 config/initializers/quiet_assets.rb 中,在我提到 logger 之前。
添加这一行:
Rails.application.assets = Sprockets::Environment.new
在此发布行之前:
Rails.application.assets.logger = Logger.new('logger.log')
在 application.rb 中,记住激活资产管道。
config.assets.enabled = true
对于生产,您可能需要设置 config.assets.compile = true
希望这会有所帮助