/ / Zmienne env nie ładowane po wywołaniu w zadaniu rake - ruby-on-rails, amazon-web-services, rake, env

Zmienne env nie są ładowane po wywołaniu w zadaniu rake - ruby-on-rails, amazon-web-services, rake, env

W 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

W tym kodzie, jeśli ręcznie wpisuję ciągi, proces działa poprawnie. Ale jak tylko użyję ENV Pojawia się następujący błąd:

rake aborted!
AWS::Errors::MissingCredentialsError:
Missing Credentials.

Jak mogę bezpiecznie korzystać z poświadczeń bez ustawiania ich w mojej bazie danych, która może zostać zatwierdzona?

Odpowiedzi:

1 dla odpowiedzi № 1

Foreman ładuje zmienne środowiskowe przed uruchomieniem procesów zdefiniowanych w pliku Procfile.

Ponieważ używamy tych wartości w zadaniu prowizji - a nie w rzeczywistym procesie sieciowym, możesz uruchomić:

foreman run rake sitemap:update

Spowoduje to, że majster załaduje wartości przed uruchomieniem zadania prowizji.