class S3ArticleUploader < CarrierWave::Uploader::Base if Rails.env.test? storage :file else storage :fog end def fog_directory ARTICLE_UPLOADER_BUCKET end def store_dir "#{ model.parent_id }/#{ model.id }" end end # config/environments/development.rb ARTICLE_UPLOADER_BUCKET = 'development-articles' # config/environments/production.rb ARTICLE_UPLOADER_BUCKET = 'production-articles'
calling the fog_directory method when you are not in TestEnvironment and initialize the BUCKET right.
You can also do the following:
def store_dir if self._storage == CarrierWave::Storage::File "#{Rails.root}/tmp/files/#{ model.parent_id }/#{ model.id }" elsif self._storage == CarrierWave::Storage::Fog "#{ model.parent_id }/#{ model.id }" end end
v2
class S3ArticleUploader < CarrierWave::Uploader::Base if Rails.env.test? storage :file else storage :fog end def initialize self.fog_directory = ARTICLE_UPLOADER_BUCKET end def store_dir "#{ model.parent_id }/#{ model.id }" end end
source share