Сбой задания Rake с `source: not found` на Heroku
У меня есть Rails-проект с граблями update_data
, который заключается в следующем:
every 1.day, :at => '2:30 am' do
root = File.expand_path('../..', __FILE__)
system("""(source #{root}/data_scripts/venv/bin/activate;
python #{root}/data_scripts/scripts/main.py;
deactivate)""")
end
Это должно сначала активировать virtualenv, запустить скрипт, а затем деактивировать virtualenv. Когда я бегу rake update_data
это работает отлично. Тем не менее, когда я бегу heroku run rake update_data
, это не с sh: 1: source: not found
, Что мне делать, чтобы source
доступен на Heroku?
2 ответа
Сообщение об ошибке sh: 1: source: not found
Значит это:
- ты бежишь
sh
вместоbash
, source
не является встроенной командой, и оболочка не может найтиsource
вPATH
,
Чтобы подтвердить этот прогон heroku run sh
, тип source
и сравнить вывод с попыткой выполнить foobar
,
Я рекомендую вам попробовать передать команду bash (через `bash -c " ваша команда идет сюда "). Вам также может понадобиться пакет сборки Python. Вы можете добавить его с помощью:
heroku buildpacks:add heroku/python
Я чувствую, что вам не нужно активировать свой virtualenv.
Просто используйте исполняемый файл virtualenv для python:
every 1.day, :at => '2:30 am' do
root = File.expand_path('../..', __FILE__)
system("#{root}/data_scripts/venv/bin/python #{root}/data_scripts/scripts/main.py")
end