冒頭の免責事項: 私はこの質問に関係する技術に関してまったくの初心者です。しかし、Google では、何も成果が得られませんでした。
Rails アプリを本番環境にデプロイしようとしています。このアプリは WEBRick を使用すると正常に動作します。また、AWS gem を使用して S3 からデータを取得しています。
Passenger を使用して Nginx をインストールしてセットアップしました。テストしているページにアクセスすると、次のエラーが表示されます。
/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 もこれと同じことを行い、同じ名前のメソッドを追加します。コードはありませんが、Passenger を使用すると、ActiveSupport 4.0 バージョンの/Module
が含まれ、これが爆発するはずです。cattr_reader
cattr_writer
aws-s3
私の解決策は、より新しく、より機能的な製品に置き換えることです。aws-sdk