【发布时间】:2015-06-17 14:08:26
【问题描述】:
在lib/tasks/sitemap.rake:
namespace :sitemap do
task update: :environment do
Rake::Task["sitemap:generate"].execute
key = ENV['AWS_ACCESS_KEY_ID']
secret = ENV['AWS_SECRET_ACCESS_KEY']
bucket = ENV['S3_BUCKET']
s3 = AWS::S3.new(access_key_id: key, secret_access_key: secret)
s3.buckets[bucket].objects['sitemap.xml'].write(data: File.open(Rails.root.join('tmp','sitemaps','sitemap.xml')), acl: :public_read)
end
end
在此代码中,如果我手动键入字符串,则该过程运行良好。但是一旦我使用ENV,我就会收到以下错误:
rake aborted!
AWS::Errors::MissingCredentialsError:
Missing Credentials.
如何安全地使用凭据而不在我的可提交代码库中设置它们。
【问题讨论】:
-
您使用的是 Foreman 还是 Figaro?
-
@CDub:工头。在 Yosemite 上使用 Homebrew 安装。
-
所以看起来如果我运行
foreman run rake sitemap:update它工作正常...嗯...我想知道我是否必须在 Heroku 调度程序上使用foreman run才能正常运行。跨度> -
是的,对于 Foreman,您需要使用
foreman run- 如果您使用 Figaro,application.yml 将成为您环境的一部分,因此单独运行rake即可。跨度>
标签: ruby-on-rails amazon-web-services rake env