ruby-on-rails - tutorial - active storage update
La integración AWS S3 produce un método indefinido `match '' (2)
Agregue :s3_region
a su mapa de configuración:
P.ej
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV[''AWS_BUCKET_ID''],
:access_key_id => ENV[''AWS_ACCESS_KEY_ID''],
:secret_access_key => ENV[''AWS_SECRET_ACCESS_KEY'']
},
:s3_region => ENV[''AWS_REGION'']
}
Desafortunadamente esta es una característica v5.0.0 (en Beta). Y, por lo tanto, no hay nada al respecto en los documentos. Sin embargo, hay un comentario al respecto en el código 5.0 real .
También es bueno tener en cuenta que la clave s3_permissions
en papertrail espera un valor de cadena ahora (solía aceptar símbolos).
:s3_permissions => ''public-read''
Estoy trabajando en un proyecto simple usando Paperclip para subir imágenes. Todo ha estado funcionando bien hasta que intenté integrar S3 con Paperclip. Al "cargar" la imagen de un usuario obtengo un NoMethodError (undefined method ''match'' for nil:NilClass):
error. Esto solo ocurre cuando ejecuto mi configuración de S3; si la comento, el archivo se carga perfectamente.
Mi configuración:
development.rb:
....
....
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV[''AWS_BUCKET_ID''],
:access_key_id => ENV[''AWS_ACCESS_KEY_ID''],
:secret_access_key => ENV[''AWS_SECRET_ACCESS_KEY'']
}
}
Mi modelo:
class User < ActiveRecord::Base
has_attached_file :image_file, default_url: "/myapp/images/:style/missing.png"
validates_attachment_file_name :image_file, matches: [/png/Z/, /jpeg/Z/, /tiff/Z/, /bmp/Z/, /jpg/Z/]
todo el error de salida de la consola:
NoMethodError (undefined method `match'' for nil:NilClass):
app/controllers/images_controller.rb:33:in `block in create''
app/controllers/images_controller.rb:32:in `create''
Cosas que intenté:
Agregué las claves AWS y el nombre del cubo directamente en el código en lugar de como una variable ambiental.
Como mencioné anteriormente, comenté la configuración de AWS en mi archivo de entorno y parecía funcionar perfectamente.
Probablemente valga la pena mencionar que instalé la gema de fog
antes para comenzar a configurar Google Cloud Storage, pero decidí seguir con S3. gem uninstall fog
para eliminar la gema, pero parece que algunas dependencias se quedaron atrás.
s3_credentials
especificar la región en usted s3_credentials
, de una manera como region: ENV["AWS_REGION"]
. En cuanto a la limpieza de gemas sin usar, puedes ejecutar bundle clean
.