O módulo do passageiro falha no erro AWS Gem With 'Class Variable Name'

2

Aviso de Abertura: Eu sou todo tipo de newb para as tecnologias envolvidas nesta questão. Mas os Googles, ela não ceder a fruta.

Estou tentando implantar um aplicativo Rails em produção. Este aplicativo funciona bem usando o WEBRick. Também estou usando a gem da AWS para recuperar dados do S3.

Eu instalei e configurei o Nginx com o Passenger. Quando eu bato na página que estou testando, recebo este erro:

/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)

Eu acho que algo sobre Nginx / Passenger / Who-Knows está sufocando no código da AWS, mas novamente, usando WEBRick, eu não recebo este erro.

    
por Dave Munger 12.05.2014 / 16:42

1 resposta

1

É devido ao fato de que aws-s3 está fazendo algo mal. Se você observar o código nesse rastreamento de pilha, verá que eles abrem a classe Class e adicionam cattr_reader e cattr_writer. O ActiveSupport também faz isso e adiciona métodos por esses mesmos nomes a Module Eu não tenho o código, mas tenho certeza que quando você usa o Passenger, ele está incluindo a versão 4.0 do ActiveSupportcattr_reader / cattr_writer e explodindo sobre isso.

Minha solução seria substituir aws-s3 pelo mais recente e mais funcional aws-sdk

    
por 23.06.2014 / 20:34