gpt4 book ai didi

ruby-on-rails - 在 rake 任务中调用时未加载环境变量

转载 作者:行者123 更新时间:2023-12-04 06:22:43 25 4
gpt4 key购买 nike

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 在启动 Procfile 中定义的进程之前加载环境变量。

由于我们在 rake 任务中使用这些值 - 而不是实际的 Web 进程,您可以运行:
foreman run rake sitemap:update
这将使工头在运行 rake 任务之前加载值。

关于ruby-on-rails - 在 rake 任务中调用时未加载环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29585431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com