我有一个需要在循环和后台运行方法的项目。
基本上我有一种方法:调用Web服务 - >阅读数据 - >存储到数据库中 - >循环遍历。
我发现了一个叫做“循环”的宝石(https://github.com/kovyrin/loops),但也许有2个问题:a)我不知道它们是否支持Rails 3& Ruby 1.9.3和2)似乎没有支持(最后一次提交是半年前)。
连连呢?他们都非常欢迎。
非常感谢,伙计们!
答案 0 :(得分:1)
Ruby有一个循环结构。
loop { puts "hi" }
答案 1 :(得分:0)
您可以从rake任务调用该方法,然后使用nohup
从命令行启动rake任务。
示例:
lib/tasks/fetch_data.rake
中的
task :fetch_and_save => :environment do
loop do
Model.method() # Do whatever you need to do here
end
end
然后,您可以使用$ nohup rake fetch_and_save
启动它。
答案 2 :(得分:0)
开发一个简单的循环程序,如:
loop do
data = read_data_from_web_service
store_data_to_db(data)
end
在upstart
中配置脚本。您可以使用foreman
gem。
否则,根据您的方便,您可以只使用foreman
而不使用upstart
。
查看link
或者您可以使用monit
之类的工具来监控脚本。
答案 3 :(得分:0)
如果我理解正确,你的目标是让代码在后台无休止地循环。
以下是您需要的部分:
loop do <code> end
将循环&lt;代码&GT;当前线程中的不间断
mythread = Thread.new(<args>) do |<args>| <code> end
mythread.run
将运行&lt;代码&GT;在另一个线程(背景,又名异步)并将传递&lt; ARGS&GT;对它来说,好像它是一个功能。
你想要做的是循环&lt;代码&GT;在一个线程内。所以......(假设你要通过
myloop = lambda do loop do <code> end end
mythread = Thread.new(myloop) do |loop| loop.call end
mythread.run
答案 4 :(得分:0)