Paperclip和AWS S3,expiring_url,未定义的方法`凭证'为零:NilClass

时间:2016-11-29 18:24:03

标签: ruby-on-rails amazon-web-services amazon-s3 paperclip

我试图在Paperclip中使用expiring_url访问Amazon S3上的对象(使用Paperclip' s instructions),但收到错误:

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) %>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我甚至不确定这是否值得发帖,或者我是否应该删除整个问题。

问题最终是因为我指的是&#34; AWS_SECRET_ACCESS_KEY&#34;在我的development.rb中,但我正在使用&#34; AWS_SECRET_ACCESS_KEY _ID &#34;作为我的环境变量。

我不能说错误信息很有帮助。我仍然想知道为什么.url.expiring_url没有?

时工作{{1}}