我一直在尝试通过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应用程序。
答案 0 :(得分:0)
注意:我注意到您正在编辑production.rb
...您正在使用的服务器不可用并且无法帮助客户?
如果不是,我想说的下一步是更改配置的某些部分,以防止您的设置起作用。
这意味着您最终将必须从rails指南中阅读配置文档,但首先...
您为什么拥有config.serve_static_assets = true
...当我们使用ngix进行资产处理时,此功能已关闭,因为Rails无法为资产提供服务。同样在现代Rails应用中,它们使用config.public_file_server.enabled
,在您的情况下,该值必须为“ false”。
由于我们没有看过您设置应用程序-我们无法立即指出错误所在...因此您需要花几个小时才能解决问题...