Используйте разные корзины Amazon s3 для разных сред.В ваших .rb файлах различных сред установите специфическую среду asset_host
.Тогда вы можете избежать обнаружения среды Rails в загрузчике.
Например, в production.rb:
config.action_controller.asset_host = "production_bucket_name.s3.amazonaws.com"
asset_host в development.rb становится:
config.action_controller.asset_host = "development_bucket_name.s3.amazonaws.com"
и т. Д.
(Также рассмотрите возможность использования CDN вместо хостинга непосредственно из S3).
Тогда ваш загрузчик станет:
class ImageUploader < CarrierWave::Uploader::Base
...
# Override the directory where uploaded files will be stored.
def store_dir
"uploads/images/#{model.id}"
end
...
end
Это лучший метод източка зрения репликации производства в различных других средах.