2016-11-29 7 views
0

私は(ペーパークリップのinstructionsを使用して)アマゾンS3上のオブジェクトにアクセスするためにペーパークリップでexpiring_urlを使用しようとしているが、エラーを取得しています:ペーパークリップとAWS S3、expiring_url、nilのための未定義のメソッド `資格情報:NilClass

undefined method `credentials' for nil:NilClass 
aws-sdk-core (2.5.3) lib/aws-sdk-core/signers/v4.rb:44:in `initialize' 
aws-sdk-core (2.5.3) lib/aws-sdk-core/s3/presigner.rb:98:in `new' 

私は@ object.attachment.urlを使用していますが、@ object.attachment.expiring_urlはエラーを出します。なぜこうなった?

development.rb:

config.paperclip_defaults = { 
     storage: :s3, 
     url: ":s3_alias_url", 
     path: "/:class/:attachment/:id_partition/:style/:filename", 
     s3_host_alias: "example.cloudfront.net/assets", 
     s3_credentials: { 
      bucket: ENV['S3_BUCKET_NAME'], 
      access_key_id: ENV['AWS_ACCESS_KEY_ID'], 
      secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], 
      s3_region: ENV['AWS_REGION'] 
     }, 
     s3_permissions: :private 
    } 

モデル:

has_attached_file :attachment 

コントローラ:

def download 
    redirect_to @object.attachment.expiring_url(10) 
end 

ビュー:

<%= link_to "attachment", download_object_path(@object) %> 

アイデア?

答えて

0

これは投稿する価値があるかどうか、または質問全体を削除する必要があるかどうかはわかりません。

問題は、私は私のdevelopment.rbに「AWS_SECRET_ACCESS_KEY」に言及していましたが、私は私の環境変数として「AWS_SECRET_ACCESS_KEY _ID」を使用していたということになりました。

エラーメッセージは役に立ちましたとは言えません。 .expiring_urlではなかったのですが、なぜ.urlが働いていたのですか?

関連する問題