【问题标题】:heroku+s3+paperclipheroku+s3+回形针
【发布时间】:2011-07-31 01:55:44
【问题描述】:

伙计们, 我在使用 s3 时遇到问题...我正在尝试以这种方式配置 s3 以使用回形针:

has_attached_file :照片,

:storage => :s3,

:bucket => 'gallerybucket',

:styles => { :small => ["150", :png], :large => ["500", :png], :very_large => ['750x500>', :png] },


:path => ":rails_root/public/images/:class/:attachment/:id/:style_:basename.png",


:url => "/images/:class/:attachment/:id/:style_:basename.png",


:default_url => "/images/sem_imagem.gif",

:s3_credentials => {
  :access_key_id => ENV['ac'],
  :secret_access_key => ENV['sc']
}

但它总是向我显示此错误。我不明白我在这里做错了什么。是否缺少某些配置?

【问题讨论】:

  • 你确认ac和sc作为环境变量存储在heroku上了吗?
  • 现在应用程序在 heroku 中运行,但是当我在本地运行它时,它给了我这个错误:AWS::S3::NoSuchKey in Public#gallery_detail Showing /home/andrelima/workspace/cec/ app/views/public/gallery_detail.html.erb 其中第 15 行引发:指定的密钥不存在。

标签: ruby-on-rails amazon-s3 heroku paperclip


【解决方案1】:

听起来您已将变量添加到您的 heroku 帐户,但您是否将它们添加到您的 .bashrc 文件中?

export ACCESS_KEY_ID='acckeyid'
export SECRET_ACCESS_KEY='secacckey'

然后在你的代码中:

:s3_credentials => {
  :access_key_id => ENV['ACCESS_KEY_ID'],
  :secret_access_key => ENV['SECRET_ACCESS_KEY']
}

我有一个blog post,我也写过这个问题。

【讨论】:

  • 伙计,我试过了,但没用。我将 s3 凭据放在单独的文件 s3.yml 中,这样:access_key_id = 'acckey' secret_access_key = 'secacckey.我在 bashrc 文件中插入了您建议的这些行,但显示了相同的错误。
  • 好的,我编辑了我的答案。我知道你有那些在 Heroku 上工作的变量,但我想我会使用更清晰的名称并将其大写以确保不会与任何其他变量混淆。希望它更清楚一点。注意变量和赋值之间的空格。 Bash 不喜欢这样:VAR='value'
【解决方案2】:

如果您还没有 s3 帐户,请在此处获取:

http://aws.amazon.com/s3/

您需要将此添加到您的联系人模型中:

app/models/contact.rb

  has_attached_file :picture, 
                     :styles => {:large => "275x450>"},
                     :storage => :s3, 
                     :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
                     :path => "appname/:attachment/:style/:id.:extension"

确保您的 appname 是您在 heroku 上的 rails 应用名称。并确保将图片重命名为您为图片命名的任何名称。

那么你需要config/s3.yml中的配置文件。

development:
  bucket: bucked_name
  access_key_id: key
  secret_access_key: secret

production:
  bucket: bucked_name
  access_key_id: key
  secret_access_key: secret

确保您获得正确的密钥和秘密。

确保在您的 gem 文件中安装了这些 gem:

gem "aws-s3", :require => "aws/s3"
gem "paperclip"

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2017-05-13
    • 1970-01-01
    • 2012-04-15
    相关资源
    最近更新 更多