2017-02-05 2 views
0

У меня есть проект Rails с граблями задача называется update_data, которая заключается в следующем:Rake задача не суметь с `источник: не found` на Heroku

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?

+0

Я думаю, что '# {корень}/data_scripts/venv/bin/питон data_scripts/скрипты/main.py' должны работать тоже. Хотя в этом случае проблема не в команде – Marat

ответ

1

Сообщение об ошибке sh: 1: source: not found означает, что:

  1. запустить sh вместо bash,
  2. source не встроенная команда и оболочка не может найти source в PATH.

Чтобы подтвердить этот пробег heroku run sh, тип source и сравните результат с попытками выполнить foobar.

Я рекомендую вам попробовать передать команду bash (через `bash -c" ваша команда идет здесь "). Вам также может понадобиться Python buildpack. Вы можете добавить его:

heroku buildpacks:add heroku/python 
+0

'heroku buildpacks: add heroku/python' не работает с' Не удалось обнаружить set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks /heroku/python.tgz', когда я пытаюсь нажать на мастера герою. – alpaca

+0

Вам нужно добавить 'requirements.txt' в корневой каталог. Подробнее см. В [docs] (https://devcenter.heroku.com/articles/python-runtimes). –

+0

отлично работает, большое вам спасибо! – alpaca

0

Я чувствую, что вам не нужно активировать ваш virtualenv.

Просто используйте питона исполняемый файл virtualenv в:

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 
+0

С этим я получаю '/ app/data_scripts/venv/bin/python: 9:/app/data_scripts/venv/bin/python: Синтаксическая ошибка: EOF in back quote подстановка'. Кажется, что среда heroku не настроена для запуска Python? – alpaca

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