gpt4 book ai didi

ruby-on-rails - 在 Carrierwave 中使用不同的 S3 存储桶进行生产和开发

转载 作者:行者123 更新时间:2023-12-04 03:40:31 25 4
gpt4 key购买 nike

我开始玩 Carrierwave ,作为 Paperclip 的替代方案.

我可以从文档中看到,要使用 S3,我应该在初始化程序中配置 Fog:

CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => 'xxx', # required
:aws_secret_access_key => 'yyy', # required
:region => 'eu-west-1' # optional, defaults to 'us-east-1'
}

end

但是,如何为不同的环境设置不同的存储桶?使用回形针,我会在 yml 文件中为开发/生产/等指定不同的凭据和/或存储桶。用载波做到这一点的最佳方法是什么?

最佳答案

如果你愿意,你可以用几乎完全相同的方式来做,就像这个完全未经测试的想法:

# config/initializers/carrierwave.rb
CarrierWave.configure do |config|
my_config = "#{Rails.root}/config/fog_credentials.yml"

YAML.load_file(my_config)[Rails.env].each do |key, val|
config.send("#{key}=", val)
end
end

# config/fog_credentials.yml
common: &common
aws_access_key: 'whatever'
...
fog_credentials:
provider: 'whoever'
...
production:
<<: *common
fog_directory: 'my-production-bucket'
development:
<<: *common
fog_directory: 'my-dev-bucket'

或者,如果您想放弃 YAML,您总是可以简单地在初始化程序中测试环境并使用案例或条件,最简单的是:
CarrierWave.configure.do |config|
if Rails.env.development?
# configure one env
else
# configure another
end

# configure common stuff
end

关于ruby-on-rails - 在 Carrierwave 中使用不同的 S3 存储桶进行生产和开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com