면책조항 시작: 저는 이 질문과 관련된 기술에 대해 전혀 모르는 사람입니다. 하지만 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도 이 작업을 수행하고 동일한 이름의 메서드를 추가합니다. Module
코드는 없지만 Passenger를 사용할 때 cattr_reader
/ 의 ActiveSupport 4.0 버전이 포함되어 cattr_writer
폭발할 것이라고 확신합니다.
aws-s3
내 솔루션은 더 새롭고 더 기능적인 것으로 교체하는 것입니다.aws-sdk