运行其他ruby脚本的服务器

时间:2017-11-26 19:01:32

标签: ruby parent-child

我有一个服务器(Sinatra),我想用它来运行和监视计划的ruby脚本。该脚本需要能够将状态更新提供回服务器脚本,并且服务器需要能够使用参数执行该子脚本。

除了将子脚本中的代码完全实现到服务器脚本之外,我能想到的唯一方法是使用全局变量。但我担心的是,如果我继续在多个服务器脚本中进行这种类型的设置,这可能会非常混乱,我知道全局变量是不受欢迎的。

处理这种情况的最佳方法是什么?我还没有真正使用模块,但是当我需要孩子将更新发送给父母时,我不知道如何使用模块..

1 个答案:

答案 0 :(得分:0)

有一个关于为Sinatra创建backwround任务的答案,这指向了这个博客:

http://blog.markwatson.com/2011/11/ruby-sinatra-web-apps-with-background.html

注意:我放了完整的地址,因为链接已经好几次了。

这里是示例的摘录,当然没有显示如何传递参数,但是你可以掌握基本的想法

require 'rubygems'
require 'sinatra'

$sum = 0

Thread.new do # trivial example work thread
  while true do
    sleep 0.12
    $sum += 1
  end
end

get '/' do
  "Testing background work thread: sum is #{$sum}"
end

您可以将参数传递给线程,也可以从线程接收返回参数。检查Vinay的答案: https://stackoverflow.com/a/1383464/1175090