ActiveStorage 直接上传在暂存中有错误的请求 URL 但在开发中没有:https://xxxxxx/rails/active_storage/direct_uploads
ActiveStorage direct upload is having a wrong Request URL in Staging but not in dev: https://xxxxxx/rails/active_storage/direct_uploads
我在 Rails 5.2 上使用 Activestorage 并使用 DigitalOcean 空间(s3 兼容存储)时遇到一个奇怪的问题,问题是上传在开发环境中运行良好但在临时环境中不起作用
在对发生这种情况的原因进行了大量搜索后,我注意到以下几点:
在开发环境中,直接上传的url是这样的:
Request URL: http://localhost:3000/rails/active_storage/direct_uploads
在临时环境中,直接上传的url是这样的:
Request URL: http://localhost/rails/active_storage/direct_uploads
如果我更改此输入以手动设置暂存环境主机名,上传工作正常
Request URL: http://stagingHostName/rails/active_storage/direct_uploads
因此,如何在配置中调整Activestorage上传的主机名?
我终于找到了这个问题的答案,希望这对其他人有帮助,direct-url 是基于以下选项构建的:
因此在 application_controller.rb
中,您可能需要添加或调整以下方法并确保在您的环境中定义了环境变量 HOST,以便 url 将被正确构建:
def default_url_options(_options = {})
host = Rails.env.production? || Rails.env.staging? ? ENV["HOST"] : "localhost:3000"
{ host: host, locale: (some logic to handle the locale)}
end
我在 Rails 5.2 上使用 Activestorage 并使用 DigitalOcean 空间(s3 兼容存储)时遇到一个奇怪的问题,问题是上传在开发环境中运行良好但在临时环境中不起作用
在对发生这种情况的原因进行了大量搜索后,我注意到以下几点:
在开发环境中,直接上传的url是这样的:
Request URL: http://localhost:3000/rails/active_storage/direct_uploads
在临时环境中,直接上传的url是这样的:
Request URL: http://localhost/rails/active_storage/direct_uploads
如果我更改此输入以手动设置暂存环境主机名,上传工作正常
Request URL: http://stagingHostName/rails/active_storage/direct_uploads
因此,如何在配置中调整Activestorage上传的主机名?
我终于找到了这个问题的答案,希望这对其他人有帮助,direct-url 是基于以下选项构建的:
因此在 application_controller.rb
中,您可能需要添加或调整以下方法并确保在您的环境中定义了环境变量 HOST,以便 url 将被正确构建:
def default_url_options(_options = {})
host = Rails.env.production? || Rails.env.staging? ? ENV["HOST"] : "localhost:3000"
{ host: host, locale: (some logic to handle the locale)}
end