El módulo pasajero falla en AWS Gem con el error 'Nombre de variable de clase'

El módulo pasajero falla en AWS Gem con el error 'Nombre de variable de clase'

Descargo de responsabilidad de apertura: soy todo un novato en las tecnologías involucradas en esta pregunta. Pero los Googles no dieron frutos.

Estoy intentando implementar una aplicación Rails en producción. Esta aplicación funciona bien con WEBRick. También estoy usando la gema de AWS para recuperar datos de S3.

He instalado y configurado Nginx con Passenger. Cuando llego a la página que estoy probando, aparece este error:

/home/ec2-user/.gem/ruby/2.0/gems/aws-s3-0.6.3/lib/aws/s3/extensions.rb:223: `@@{' is not allowed as a class variable name
/home/ec2-user/.gem/ruby/2.0/gems/aws-s3-0.6.3/lib/aws/s3/extensions.rb:223: syntax error, unexpected end-of-input
    unless defined? @@{:instance_writer=>false}
                      ^ (SyntaxError)

Supongo que algo acerca de Nginx/Passenger/Who-Knows se está ahogando en el código de AWS, pero nuevamente, al usar WEBRick, no aparece este error.

Respuesta1

Se debe al hecho de que aws-s3está haciendo algo malo. Si observa el código en ese seguimiento de la pila, puede ver que abren la clase Classy agregan cattr_reader y cattr_writer. ActiveSupport también hace esto y agrega métodos con esos mismos nombres. ModuleNo tengo el código, pero estoy bastante seguro de que cuando usa Passenger, incluye la versión ActiveSupport 4.0 de cattr_reader/ cattr_writery explota esto.

Mi solución sería reemplazar aws-s3con el más nuevo y funcional.aws-sdk

información relacionada