【问题标题】:Rufus Scheduler not runningRufus 调度程序未运行
【发布时间】:2012-05-25 08:22:10
【问题描述】:

我想用 gem rufus-scheduler 做一些简单的事情: https://github.com/jmettraux/rufus-scheduler

但是,我无法让它工作。

我有一个常规的 Rails 应用程序。我创建了一个 .rb 文件:

# test_rufus_scheduler.rb
require 'rubygems'
require 'rufus/scheduler'

scheduler = Rufus::Scheduler.start_new

scheduler.in '1s' do
  puts "hello world"
end

然后,当我尝试 ruby​​ test_rufus_scheduler.rb 时,没有任何反应。我做对了吗? gem 列表显示 rufus-scheduler。

谢谢。

【问题讨论】:

    标签: ruby-on-rails cron rufus-scheduler


    【解决方案1】:

    如果您的脚本立即退出,请尝试添加

    scheduler.join

    最后。请注意,单独运行脚本和通过 rails 运行脚本是不同的。有关详细信息,请参阅README

    【讨论】:

      【解决方案2】:

      将以下行添加到您的 apache2 配置并重新启动您的 apache2 服务器

      RailsAppSpawnerIdleTime 0
      PassengerMinInstances 1
      

      【讨论】:

        【解决方案3】:

        找到了解决此here 的方法(也与上面的Ajet's 答案同步)。

        生产服务器需要一些额外的设置。在大多数生产 Web 服务器上,空闲的 Ruby 进程都会被杀死。为了让 Rufus 工作,您需要阻止这种情况发生。对于Passenger/Nginx,您可以将以下代码复制到您网站的nginx.conf 配置文件中passenger_enabled on;行之后。

        nginx.conf:

        passenger_spawn_method direct;
        passenger_min_instances 1;
        passenger_pool_idle_time 0;
        

        【讨论】:

        • 我使用 Amazon Linux AMI 作为 EC2 的服务器。当我远程访问服务器时,我看不到文件 nginx.conf。我确实有一个乘客文件 /etc/init.d/passenger。我要修改这个文件吗?我应该在哪里添加您在解决方案中列出的信息?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-13
        • 1970-01-01
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多