2015-04-12 1 views
2

В lib/tasks/sitemap.rake:переменного Env не загружается при запуске в передней задаче

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. 

Как я могу безопасно использовать учетные данные, не устанавливая их в моем коде фиксации никому.

+0

Вы используете Форман или Фигаро? – CDub

+0

@CDUB: Форман. Устанавливается с использованием Homebrew на Yosemite. – sergserg

+0

Так выглядит, если я запустил 'foreman run rake sitemap: update', он отлично работает ... Хм ... Интересно, должен ли я использовать' foreman run' в планировщике Heroku, чтобы он работал правильно. – sergserg

ответ

1

Foreman загружает переменные окружения перед запуском процессов, определенных в вашем файле Procfile.

Так как мы используем эти значения в задаче грабли - не реальный веб-процесс, вы можете запустить:

foreman run rake sitemap:update

Это позволит старшина загрузить значения перед выполнением задачи грабли.

 Смежные вопросы

  • Нет связанных вопросов^_^