开放免责声明:我对这个问题涉及的技术有各种各样的新手。 但谷歌,她没有屈服 – 一个果实。
我正在尝试将Rails应用程序部署到生产环境中。 这个应用程序工作正常使用WEBRick。 我也使用AWS gem从S3中检索数据。
我用Passenger安装并设置了Nginx。 当我打开页面我正在testing我得到这个错误:
/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)
我猜想关于Nginx / Passenger / Who-Knows在AWS代码上感到窒息,但是再次使用WEBRick,我不会得到这个错误。
这是由于aws-s3做了一件坏事。 如果您查看堆栈跟踪中的代码,可以看到它们打开了Class并添加了cattr_reader和cattr_writer。 ActiveSupport也做到这一点,并通过这些相同的名称添加到Module我没有代码,但我很确定,当你使用Passenger,它包括ActiveRepport 4.0版本的cattr_reader / cattr_writer和cattr_writer了。
我的解决办法是用新的和更多function的aws-sdk取代aws-s3