我之前使用sinatra编写的应用程序遵循类似于下面代码中的行为
require 'sinatra'
class A
attr_accessor :tick
def initialize
@tick = 0
end
def start
while true
@tick +=1
sleep 10
end
end
end
t = A.new
Thread.new do t.start end
get '/' do
t.tick
end
它在启动时启动了几个线程,每个线程都有一个进程到它自己的类,它运行正常,能够在浏览器上获取和设置值,并将大多数数据存储在mysql后端,主要就像MVC设置一样Rails我无法重现相同的行为,虽然我在Rails的一个完整的菜鸟我没有找到一个明确的解决方案
答案 0 :(得分:1)
您需要rails中的后台任务管理器才能实现此类功能。有一个few alternatives for this。
我过去曾使用delayed_job,它非常简单,使用您当前的数据库来存储作业和结果(没有额外的依赖关系)。
但在你的情况下,我建议使用resque:它使用redis(所以这是一个依赖项,如果你可以忍受),但它有一个内置的管理控制台来检查正在运行的作业并管理他们。看起来像一个完美的契合:)