我的Rails应用程序托管在Heroku上,但我需要让Paperclip在本地工作,以便我可以在测试中上传照片 . 我真的很接近,但我仍然坚持“缺少必需:桶选项”错误 .
我已尝试在我的环境文件中移动设置,以及添加带有我的AWS凭据的config / application.yml文件,但没有骰子 .
这是我在development.rb中的配置(在production.rb中看起来相同):
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['S3_BUCKET_NAME'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
我试过移动:在s3_credentials之外的bucket属性,但它没有改变任何东西 . Application.yml看起来像这样:
AWS_ACCESS_KEY_ID="xxxxxxxxxxxxxxxxx"
AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxx"
S3_BUCKET_NAME="xxxxxx"
我还安装了dot-env gem并将s3.env文件添加到我的应用程序的索引中,该索引包含与上面相同的凭据,但即使这样也没有用 . 也没有将我的Paperclip配置与我模型中的has_attached_file一起添加 .
我该怎么办??
2 回答
或者,如果有人遇到此问题并且不想使用.env文件,则以下方法有效 .
假设您的存储桶托管在美国地区,请在配置目录下放置一个名为aws.yml的文件 . 该文件应采用以下格式:
在你的模型中:
将your_bucket_name替换为实际存储桶的名称 .
的Gemfile:
在环境, 生产环境 和发展:
要在Heroku上投入 生产环境 ,您必须使用终端设置以下内容:
您的
Application.yml
文件看起来不像YAML . 它应该如下所示:如果您正在加载yml文件,就像他们建议here一样,您希望您的yml文件如下所示:
您需要一种在开发环境中为应用程序设置环境变量的方法 . 使用Application.yml或.env文件应该可以工作,但您可能不需要两者 .