asset_sync摘要网址不适用于生产

时间:2014-04-10 04:45:26

标签: ruby-on-rails asset-sync

我一直在试图弄清楚为什么我的生产配置仍会只显示“非摘要”网址。如果我在本地运行RAILS_ENV =生产rails,那么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指向已编译的摘要网址的触发器?

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

1 个答案:

答案 0 :(得分:0)

希望这将有助于拯救我的程序员朋友们一些头疼:D。我在" digest_path & asset_digest_path not allowing digest URLs"上回答了这个问题。但会在这里重新发布它,这样可以节省一些点击次数。

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

我仍然遇到multi_json gem的最新版本的问题,因此我将其降级为1.7.8并且工作正常。

gem 'multi_json', '1.7.8'

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

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

/public/assets/manifest.json 

或用

指定
config.assets.manifest = '...'

可能会或可能不会被删除。

干杯!