ruby on rails - tutorial - Carrierwave/Fog/S3 "no es un proveedor de almacenamiento reconocido"
file upload with carrierwave (2)
Tengo una aplicación de Rails que usa Carrierwave para cargas de archivos. Ha funcionado bien, pero quiero comenzar a usar Amazon S3 para el almacenamiento de mi imagen. Estoy recibiendo este error:
ArgumentError ( is not a recognized storage provider):
app/controllers/salons_controller.rb:52:in `update''
Me he asegurado de tener las últimas gemas para Carrierwave y Fog. Esto está en mi Gemfile:
gem ''carrierwave''
gem ''aws-sdk''
gem ''fog''
fog.rb se ve así:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => ''AWS'',
:aws_access_key_id => ''MYACCESSKEY'',
:aws_secret_access_key => ''MYSECRETKACCESSKEY'',
:region => ''us-east-1''
}
config.fog_directory = ''andrunix''
config.fog_public = true
config.fog_attributes = {''Cache-Control''=>''max-age=315576000''}
fin
La clase Uploader se ve así:
class SalonImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :fog
def store_dir
# "andrunix" is the bucket name on S3
"andrunix/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
Si cambio el almacenamiento a ''archivo'', funciona bien. Establecer el almacenamiento en ''niebla'' genera este error.
OK, soy un idiota :)
En algún momento, no sé dónde, agregué un archivo fog.rb con mi configuración de CarrierWave al directorio lib / carrierwave / storage. Me desespere, pagué una suscripción a Railscasts para poder ver el episodio # 383 ( http://railscasts.com/episodes/383-uploading-to-amazon-s3?autoplay=true ) y a las 3:02 encontré el error de mis maneras. La configuración de Carrierwave debe colocarse en config / initializers / carrierwave.rb.
No sé de dónde saqué esta otra ubicación, pero una vez que moví la configuración a la ubicación correcta, todo está bien.
Me encontré con el mismo problema, y la gente debe saber que cualquier error tipográfico en el archivo de configuración: "config / initializers / carrierwave.rb", conduce a ese error.