Открытие Отказ от ответственности: Я новичок во всех технологиях, связанных с этим вопросом. Но Google, она не дает-a плод.
Я пытаюсь развернуть приложение Rails в production. Это приложение отлично работает с использованием WEBRick. Я также использую AWS gem для извлечения данных из S3.
Я установил и настроил Nginx с Passenger. Когда я захожу на страницу, которую тестирую, я получаю эту ошибку:
/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, я не получаю этой ошибки.
решение1
Это из-за того, что aws-s3
он делает что-то злое. Если вы посмотрите на код в этой трассировке стека, вы увидите, что они открывают класс Class
и добавляют cattr_reader и cattr_writer. ActiveSupport также делает это и добавляет методы с теми же именами в Module
У меня нет кода, но я почти уверен, что когда вы используете Passenger, он включает версию ActiveSupport 4.0 cattr_reader
/ cattr_writer
и взрывается на этом.
Моим решением было бы заменить aws-s3
его на более новый и более функциональный.aws-sdk