Rake 任务因 Heroku 上的“source: not found”而失败
Rake task failing with `source: not found` on Heroku
我有一个 Rails 项目,其中有一个名为 update_data
的 rake 任务,如下所示:
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
。我应该怎么做才能在 Heroku 上使用 source
?
我觉得你不需要激活你的 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
错误信息sh: 1: source: not found
表示:
- 你 运行
sh
而不是 bash
,
source
不是 built-in 命令,shell 无法在 PATH
. 中找到 source
要确认此 运行 heroku run sh
,请键入 source
并将输出与尝试执行 foobar
.
进行比较
我建议您尝试将命令传递给 bash(通过 `bash -c "your command goes here")。您可能还需要一个 Python buildpack。您可以添加它:
heroku buildpacks:add heroku/python
我有一个 Rails 项目,其中有一个名为 update_data
的 rake 任务,如下所示:
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
。我应该怎么做才能在 Heroku 上使用 source
?
我觉得你不需要激活你的 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
错误信息sh: 1: source: not found
表示:
- 你 运行
sh
而不是bash
, source
不是 built-in 命令,shell 无法在PATH
. 中找到
source
要确认此 运行 heroku run sh
,请键入 source
并将输出与尝试执行 foobar
.
我建议您尝试将命令传递给 bash(通过 `bash -c "your command goes here")。您可能还需要一个 Python buildpack。您可以添加它:
heroku buildpacks:add heroku/python