Если хотите, вы можете сделать это точно так же, как эта идея, не прошедшая испытания:
# 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