【问题标题】:asset_sync digest URLs not working on production资产同步摘要 URL 不适用于生产
【发布时间】:2014-04-13 14:26:42
【问题描述】:

我一直试图弄清楚为什么我的生产配置仍将只显示“非摘要”URL。如果我在本地运行 RAILS_ENV=production rails s,那么 URL 就可以正常工作。但是一旦我推送到生产环境,URL 就会像这样显示,而不是摘要。

//s3.amazonaws.com/xxxx/stylesheets/application.css

这是我的生产配置:

  # Disable Rails's static asset server (Apache or nginx will already do this).
  config.serve_static_assets = false

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = :uglifier
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = false

  # Generate digests for assets URLs.
  config.assets.digest = true

  config.action_controller.asset_host = "//s3.amazonaws.com/xxxxx"
  config.assets.prefix = "/production/assets"

我是否错过了指向已编译摘要 URL 的 URL 触发器?

另一个问题参考,同样的问题(刚刚找到它)。 Rails 4.0.3 generating incorrect asset paths with asset_sync

【问题讨论】:

    标签: ruby-on-rails asset-sync


    【解决方案1】:

    希望这能帮助我的程序员朋友们免去一些麻烦:D。我已经在“digest_path & asset_digest_path not allowing digest URLs”上回答了这个问题,但会在这里重新发布,这样可以为您节省一些点击次数。

    我正在将文件上传到 S3,但我没有意识到 Rails 没有加载清单。您可以正确设置所有生产设置(如上面和其他线程中),但如果您没有 Rails 可读的 manifest.json 文件,它仍会生成 /javascript/*(示例)url。

    我在使用multi_json gem 的最新版本时仍然遇到问题,所以我将它降级到 1.7.8 并且它工作正常。

    gem 'multi_json', '1.7.8'
    

    这样它就可以读取rake assets:precompile 创建的manifest.json 文件。

    在这个 sprockets 线程 https://github.com/rails/sprockets-rails/issues/107 上存在争论,关于您的清单文件应该在 git 中还是仅在部署脚本中,做最适合您的事情,只要确保它可以在以下位置找到:

    /public/assets/manifest.json 
    

    或自己指定

    config.assets.manifest = '...'
    

    这可能会或可能不会被贬低。

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多