Paperclip非常适合Heroku上的应用程序,但我似乎无法让它在本地运行。每当我尝试做某事时,我都会得到“缺少必需品:桶选项”......但是桶就在那里,它适用于Heroku!
如果有帮助,这是我的模型:
has_attached_file :screen_one, :styles => { :medium => "800x600>", :thumb => "110x80#" },
:storage => :s3,
:s3_credentials => {
:access_key_id => ENV['accesskeyishere'],
:bucket => ENV['sitebuilderreport'],
:secret_access_key => ENV['secretaccesskeyishere']
}
我已经更改了访问密钥,因为这是一个公开帖子:)
答案 0 :(得分:6)
我遇到了同样的问题(缺少:每个地方都有桶)。以下答案在我的案例中完美无缺。
一个。将这些添加到 .bash_profile (注意:填写您的亚马逊帐户凭据)
export AWS_ACCESS_KEY_ID=XXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXX
export AWS_BUCKET=XXXXXXXXXX
湾这是我的 development.rb (注意:复制并粘贴而不更改任何内容)
Paperclip.options[:command_path] = "/usr/local/bin/"
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
请务必使用最新的回形针和aws-s3宝石重新绑定您的Rails应用。此外,请确保退出终端并再次运行所有内容,因为这是对.bash_profile文件的更新。
我希望现在一切顺利。
答案 1 :(得分:2)
您应该在mac os中的用户 .bash_profile 中定义 ENV [] 变量。
您应该执行“heroku config”以查看S3的heroku环境键并在您当地的环境中进行定义。
例如:
$ heroku config
AWS_ACCESS_KEY_ID: your_S3_XXX_key<br />
AWS_SECRET_ACCESS_KEY: your_secret_XXX_key<br />
AWS_BUCKET: your_production_bucket<br />
DATABASE_URL: postgres://xxxxxxx<br />
[...]<br />
您应该在 .bash_profile 文件中复制access_key和secret:
export AWS_ACCESS_KEY_ID=your_S3_XXX_key<br />
export AWS_SECRET_ACCESS_KEY=your_secret_XXX_key
export AWS_BUCKET=your_development_bucket => "Specify new bucket for your dev environement".
答案 2 :(得分:1)
如果有人做了同样愚蠢的事情 - 并且创建了一个本地脚本来源导出所有AWS环境变量 - 请确保您在生成rails服务器的同一个Terminal会话中获取它!如果使用分割窗口(CMD SHIFT D),请记住,在一个窗口中获取适当的环境变量不会在另一个窗口中执行。非常愚蠢的错误,但我确信(或者至少是温和的希望)我不会是唯一一个犯错误的人。
答案 3 :(得分:0)
您也可以简单地使用(填写正确的值):
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => 'AWS_BUCKET',
:access_key_id => 'AWS_ACCESS_KEY_ID',
:secret_access_key => 'AWS_SECRET_ACCESS_KEY'
}
}
答案 4 :(得分:0)
我有同样的问题,我有config / application.yml(不确定它是遗留的东西还是它来自哪里)但是这允许在rails&#39; codebase&#39;中设置环境变量。我忘了它在这里,在heroku中被忽略并且覆盖了一些没有set.doh的设置!