【发布时间】:2015-05-13 08:07:37
【问题描述】:
我正在使用 assets_sync 从 S3 存储桶提供我的资产(css、js 和图像)。我无法加载我的 CSS/JS(我收到 403 禁止错误),但图像加载正常。我想我已经找到了问题(它看起来不像它的存储桶或 IAM 权限)。
当我上传我的资产时,会生成一个文件名
mybucket.s3.amazonaws.com/assets/application-123456789101112.css
但是,当我的应用程序随后尝试调用 css 文件时,它尝试获取的 url 就像
mybucket.s3.amazonaws.com/assets/application.self-573489573934.css
主要区别在于包含self 和完全不同的MD5 哈希字符串,因此在尝试访问此网址时是被禁止的。
这是我的资产同步配置
if defined?(AssetSync)
AssetSync.configure do |config|
config.fog_provider = 'AWS'
config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
config.aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
config.fog_directory = ENV['FOG_DIRECTORY']
config.existing_remote_files = "delete"
config.gzip_compression = true
config.manifest = true
config.custom_headers = { '.*' => { cache_control: 'max-age=315576000', expires: 1.year.from_now.httpdate } }
end
end
我也认为问题可能在于我的环境设置。与 Rails 4 相比,rails 4.2.1 有什么变化吗?
这和它有什么关系吗? https://github.com/thoughtbot/paperclip/issues/1772
在我的 development.rb 中(因为我现在只是在本地测试)我有
config.assets.compile = true
config.assets.digest = true
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? # Never seen this one before
【问题讨论】:
标签: css ruby-on-rails ruby ruby-on-rails-4 amazon-s3