在简单的轨道应用程序中启动守护程序

时间:2013-03-23 16:54:11

标签: ruby-on-rails ruby controller ruby-daemons

我有一个简单的控制器,我希望该控制器启动守护进程来执行后台作业(它读取连接到计算机的Arduino板供给的sstdin数据)。

class DaemonController < ApplicationController
  def index
    require 'rubygems'
    require 'daemons'

    options = {
      :app_name => "collectTemperature",
      :multiple => true
    }
    readtty = Daemons.call(options) do
    loop {
      sleep 10
    }
    end
  end # def                                                                      
end # class       

它确实创建了一个进程(从现在开始只是睡眠,但是一旦这个简单的代码工作就会进入)但是当我通过浏览器上的rails框架调用控制器时,我在浏览器指针中收到一条错误消息到守护程序调用的行(第14行)。

SystemExit in DaemonController#index

daemons (1.1.9) lib/daemons/daemonize.rb:65:in `exit'
daemons (1.1.9) lib/daemons/daemonize.rb:65:in `call_as_daemon'
daemons (1.1.9) lib/daemons/application.rb:259:in `start_proc'
daemons (1.1.9) lib/daemons/application.rb:296:in `start'
daemons (1.1.9) lib/daemons.rb:252:in `call'
app/controllers/daemon_controller.rb:14:in `index'

我非常感谢任何帮助,如果这是一个愚蠢的问题,我非常抱歉; - )

1 个答案:

答案 0 :(得分:1)

Daemons.call(options) begin而不是Daemons.call(options) do