0

我一直在试图弄清楚为什么我的生产配置仍然只会显示“非摘要”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 使用asset_sync 生成不正确的资产路径

4

1 回答 1

0

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

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

我仍然无法使用multi_jsongem 的最新版本,所以我将它降级到 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 = '...'

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

干杯!

于 2014-04-13T06:26:42.540 回答