【问题标题】:Rails 5: Cron jobs using Whenever not runningRails 5:使用每当不运行时的 Cron 作业
【发布时间】:2017-11-05 04:29:10
【问题描述】:

我正在尝试使用Whenever gem 每小时运行一次任务。

#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

在终端中,我得到了我想要的结果,但是同一个 rake 任务并没有像 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

【问题讨论】:

  • 你能显示用户 crontab 文件中的内容吗?
  • edit带有此信息的问题,这是不可读的。
  • 尝试在没有静默标志的命令行中运行 crontab 中的命令。

标签: ruby-on-rails ruby cron whenever


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-10-20
    • 2016-03-01
    • 2015-03-22
    • 2011-03-20
    • 1970-01-01
    • 2011-10-22
    • 2014-01-12
    • 1970-01-01
    • 2013-11-27
    相关资源
    最近更新 更多