此问题已解决。结果我花了太多时间研究这个问题,因为它看起来很常见,而且没有足够的时间仔细检查我的秘密访问密钥是否已正确复制/粘贴到我的本地环境中。
我已经阅读了大约 20 个关于此的问题,但到目前为止没有一个对我有帮助。我在创建控制器中不断收到 SignatureDoesNotMatch 异常,但我不知道为什么。
我的班级(由于该项目未发布,因此小幅重命名为“S3”):
class S3File < ActiveRecord::Base
has_attached_file :s3_attachment,
storage: :s3,
bucket: ENV['S3_BUCKET_NAME'],
s3_credentials: {
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
},
path: ':id/temp.jpg'
end
我在 .env 文件中定义了 ENV 变量,并用工头启动了我的服务器,并且我已经验证了这些值在“工头运行 rails 控制台”中是正确的。
这对我来说从来没有用过,但到目前为止我已经尝试了几种路径,我已经安装了 imagemagick,并包含了以下 gem:
# rails -v Rails 3.2.2
# ruby -v Ruby 1.9.2p290
gem 'paperclip' # paperclip (3.0.4) in Gemfile.lock
gem 'aws-s3' # aws-s3 (0.6.3) in Gemfile.lock
gem 'aws-sdk' # aws-sdk (1.5.2) in Gemfile.lock
gem 'rmagick' # rmagick (2.13.1) in Gemfile.lock
最后我的 _form 部分看起来像:
<%= form_for @s3_file do |f| %>
<div class="field">
<%= f.file_field :email_attachment %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我会向任何需要它的人提供更多信息,但在这一点上我很难过。感谢任何能够提供帮助的人。