2017-06-04 73 views
2

我正在嘗試使用每當gem時每小時運行一個任務。Rails 5:使用Cron作業每當不運行時

#check_price.rake 
namespace :check_price do 
    desc "TODO" 
    task check_now: :environment do 
    price_sync = PriceSyncLibrary.new 
    Product.all.each do |product| 
     product.price.push(price_sync.get_price_from_link(product.flipkart_link)) 
     product.time.push(Time.now) 
     product.save! 
    end 
    end 
end 

這是我schedule.rb文件

every 1.minute do 
    rake "check_price:check_now", environment: 'development' 
end 

當我運行

rake check_price:check_now 
在終端

,我得到我想要的結果,但同樣的耙子任務不按schedule.rb文件中指定的每分鐘運行一次。我錯過了什麼嗎?

當我在控制檯中運行

crontab -l 

,我得到這樣的結果。

# Begin Whenever generated tasks for: /home/raghav/workspace/apps/Shotgun/config/schedule.rb 
* * * * * /bin/bash -l -c 'cd /home/raghav/workspace/apps/Shotgun && RAILS_ENV=production bundle exec rake check_price:check_now --silent' 

# End Whenever generated tasks for: /home/raghav/workspace/apps/Shotgun/config/schedule.rb 

# Begin Whenever generated tasks for: Shotgun 
* * * * * /bin/bash -l -c 'cd /home/raghav/workspace/apps/Shotgun && RAILS_ENV=production bundle exec rake check_price:check_now --silent' 

# End Whenever generated tasks for: Shotgun 
+0

你可以顯示用戶crontab文件中的內容嗎? –

+0

請用這些信息[編輯]問題,這是不可讀的。 – Iceman

+0

嘗試在沒有無聲標誌的命令行中的crontab中運行命令。 –

回答

1

在你schedule.rb文件,您的環境設置爲開發和在crontab中-l命令環境的響應設置爲生產, 您可以設置這樣的環境,

set :environment, "development" 
set :output, {:error => "log/cron_error_log.log", :standard => "log/cron_log.log"} 

every 1.minute do 
    rake "check_price:check_now" 
end