use*_*640 4 assets ruby-on-rails asset-pipeline
我试图动态编译javascript,然后将其添加到sprockets存储,以便它可用.我研究过的每个地方都建议使用以下代码来注册javascript:
env = Rails.application.assets.is_a?(Sprockets::Index) ? Rails.application.assets.instance_variable_get('@environment') : Rails.application
Rails.application.config.assets.digests[file_name] = env[file_name].digest_path
Run Code Online (Sandbox Code Playgroud)
在生产中,Rails.application.assets.instance_variable_get('@environment')总是返回零,有什么我做错了吗?或者我应该添加其他东西?
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方法logger=' 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
希望这会有所帮助
| 归档时间: |
|
| 查看次数: |
914 次 |
| 最近记录: |