【问题标题】:Rufus-Scheduler Running Only OnceRufus-Scheduler 只运行一次
【发布时间】:2019-09-01 02:50:17
【问题描述】:

我正在使用 Rufus Scheduler 每两分钟运行另一个 Ruby 脚本。该脚本运行一次,但不再运行。我的代码有错误吗? HTOP显示“script.rb”代码运行一次后,“launcher.rb”作为进程继续存在。

#launcher.rb

require "rubygems"
require "rufus-scheduler"

scheduler = Rufus::Scheduler.new    

scheduler.every("2m")do
    require "/home/pi/Bots/script.rb"
end

scheduler.join

【问题讨论】:

    标签: ruby rufus-scheduler


    【解决方案1】:

    你可以试试

    #launcher.rb
    
    require "rubygems"
    require "rufus-scheduler"
    
    scheduler = Rufus::Scheduler.new
    
    scheduler.every("2m")do
      #require "/home/pi/Bots/script.rb"
      load "/home/pi/Bots/script.rb"
    end
    
    scheduler.join
    

    它可能会起作用(“可能”是因为我不知道您的 script.rb 中到底有什么)。 require 将不会加载并再次运行“home/pi/Bots/script.rb”后面的任何内容,而 load 将每次加载并运行。

    您当前的启动器发生的情况是每 2 分钟调用一次 require,但它仅在第一次加载并运行 script.rb。

    请注意以下可能会更好:

    # script.rb
    
    module MyBot
      def self.call
        # do the job...
      end
    end
    
    
    # launcher.rb
    
    require 'rubygems'
    require 'rufus-scheduler'
    require '/home/pi/Bots/script.rb'
    
    scheduler = Rufus::Scheduler.new
    
    scheduler.every('2m') do
      MyBot.call
    end
    
    scheduler.join
    

    Kernel#loadKernel#require

    【讨论】:

    • 您的“load”与“require”建议解决了这个问题。非常感谢您的帮助,以及您在 Rufus 上所做的所有工作——这是一款很棒的软件!
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 2016-11-16
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多