我有一个非常简单的模型和附件
has_attached_file :upload,
:storage => :s3,
:bucket => 'bestofbauer',
:s3_credentials => {
:access_key_id => ENV['MyAccessKEY'],
:secret_access_key => ENV['MySecretKey']
}
我有一个名为 bestofbauer 的带有 s3 的存储桶设置。
我知道我可以将凭据重构为初始化程序,但我还没有得到它来保存附件,所以我并不担心。
当我运行对象及其附件的保存时,我得到:
RuntimeError in RecommendationsController#create
Missing credentials
我倾倒了:Credentials missing when uploading photos with Paperclip and Amazon s3 但这并没有解决我的问题。
我正在使用以下 gem :
gem "paperclip"
gem "sws-sdk"
gem 'aws-s3'
还有其他想法吗?
最佳答案
您需要设置环境变量。这里有两种不同的方法来做到这一点:
rails server
或任何其他访问您的 S3 帐户的命令时,您都需要包含您的 key :$ MyAccessKEY=ACCESS_KEY MySecretKEY=SECRET_KEY rails server
~/.bash_rc
或 ~/.bash_profile
来设置你的环境变量export MyAccessKEY=ACCESS_KEY
export MySecretKEY=SECRET_KEY
然后打开一个新的终端窗口并仔细检查它们是否已设置
$ echo $MyAccessKey
> ACCESS KEY PRINTS OUT HERE
如果您要部署到 Heroku,那么您还需要在那里提供环境变量:
$ heroku config:add MyAccessKEY=ACCESS_KEY MySecretKEY=SECRET_KEY
您可以查看您的 Heroku 配置:
$ heroku config
它将列出您为该应用程序拥有的所有配置变量。
您可能还想将 S3 存储桶名称放在 ENV 设置中,这样在本地测试时就不会弄乱存储桶。
关于ruby-on-rails-3 - 如何使用 Rails 3 中的 Paperclip 和 s3 存储解决 "Missing Credentials",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9624978/