簡體   English   中英

耙任務在Heroku上失敗,並帶有`source:not found`

[英]Rake task failing with `source: not found` on 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 我應該怎么做才能使Heroku上的source可用?

錯誤消息sh: 1: source: not found表示:

  1. 您運行sh而不是bash
  2. source不是內置命令,shell無法在PATH找到source

為了證實這一點來看heroku run sh ,類型source和輸出與試圖執行比較foobar

我建議您嘗試將命令傳遞給bash(通過`bash -c“您的命令在此處”)。 您可能還需要Python buildpack。 您可以添加以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM