我有一个服务器(Sinatra),我想用它来运行和监视计划的ruby脚本。该脚本需要能够将状态更新提供回服务器脚本,并且服务器需要能够使用参数执行该子脚本。
除了将子脚本中的代码完全实现到服务器脚本之外,我能想到的唯一方法是使用全局变量。但我担心的是,如果我继续在多个服务器脚本中进行这种类型的设置,这可能会非常混乱,我知道全局变量是不受欢迎的。
处理这种情况的最佳方法是什么?我还没有真正使用模块,但是当我需要孩子将更新发送给父母时,我不知道如何使用模块..
答案 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