我正在尝试使用带有S3 AWS的paperclip。我已经在.bash_profile中设置了密钥和存储桶名称,但Rials / Paperclip似乎无法读取它们,因为当我尝试在开发中上传图像时出现以下错误...
'缺少必需品:桶选项'
如果我用实际名称替换ENV [' S3_BUCKET_NAME'],那么我会得到以下内容......
'缺少证书。无法找到AWS凭据'
以下是模型中的设置......
has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" },
: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_host_name => 's3-eu-west-1.amazonaws.com'
我已尝试将凭据放在Rails的开发配置文件中,但我有相同的错误。我是否需要告诉rails在哪里查找ENV变量,或者我在这里做错了什么?似乎其他人有类似的问题,但我找不到解决方案。
感谢阅读。
答案 0 :(得分:0)
只需将AWS桶,密钥和key_id存储在YAML文件中,然后在' config / initializers'中创建新文件以读取YAML文件内容并设置相应的ENV变量。别忘了重新启动rails服务器
实施例
google_client = YAML.load_file("#{Rails.root.join('config/google_client.yml')}")
ENV['GOOGLE_APP_NAME'] = google_client['APP_NAME']
ENV['GOOGLE_CLIENT_ID'] = google_client['CLIENT_ID']
ENV['GOOGLE_CLIENT_SECRET'] = google_client['CLIENT_SECRET']
ENV['GOOGLE_CLIENT_SCOPE'] = google_client['CLIENT_SCOPE']
通常,我们不会在Github提交中推送aws信息,而只是将ssh推送到远程服务器并将YAML文件放在我们的Rails应用程序的config文件夹中。因此,只有有权访问您服务器的人才能读取您的aws凭据而不是所有人,即使他们拥有Github访问权限。
告诉我这是否解决了你的问题。