无法通过Cloudfront / EGDE插件提供静态资产

时间:2020-03-25 18:09:25

标签: ruby-on-rails

我一直在尝试通过Heroku上的EDGE插件来提供我所有的静态资产。我已经在我的 production.rb 文件

中添加了以下几行
config.serve_static_assets = true
config.static_cache_control = "public, max age=2592000"
config.action_controller.asset_host = ENV["https://1a2b3c4d.cloudfront.net"]

但是似乎还不够。当我检查我的资产时,它们仍然通过Assets文件夹提供服务。在EDGE上的Herokus指南中,它指出添加config.action_controller.asset_host = ENV["https://1a2b3c4d.cloudfront.net"] 应该这样做。

我怀疑我需要添加其他内容,或者我的 production.rb 中有其他内容可以阻止资产通过EDGE提供服务,但我不知道那是什么云

我的整体 production.rb

config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local       = false
config.action_controller.perform_caching = true
config.assets.js_compressor = Uglifier.new(harmony: true)
config.assets.compile = false
config.active_storage.service = :local
config.force_ssl = true
config.log_level = :debug
config.log_tags = [:request_id]
config.action_mailer.perform_caching = false
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
config.active_record.dump_schema_after_migration = false
config.serve_static_assets = true
config.static_cache_control = "public, max age=2592000"
config.action_controller.asset_host = ENV["https://1a2b3c4d.cloudfront.net"]

在5.2.1和ruby 2.5.1上运行

编辑#1-部署新代码时,我重新介绍了Heroku应用程序。

1 个答案:

答案 0 :(得分:0)

注意:我注意到您正在编辑production.rb ...您正在使用的服务器不可用并且无法帮助客户?

如果不是,我想说的下一步是更改配置的某些部分,以防止您的设置起作用。

这意味着您最终将必须从rails指南中阅读配置文档,但首先...

您为什么拥有config.serve_static_assets = true ...当我们使用ngix进行资产处理时,此功能已关闭,因为Rails无法为资产提供服务。同样在现代Rails应用中,它们使用config.public_file_server.enabled,在您的情况下,该值必须为“ false”。


由于我们没有看过您设置应用程序-我们无法立即指出错误所在...因此您需要花几个小时才能解决问题...

  • 如果快速诊断失败,请分叉该应用程序(从首次尝试进行相关更改之前开始)和/或使用暂存环境
  • 清单从新的流程开始完成每个步骤
  • 从其他人那里获取有效的骨架演示,然后再次执行清单
  • 在那时,这不是集成,而是您自己的代码或数据中的东西……也许将您的东西粘贴到框架演示中