Нужно решение ruby ​​для выполнения метода в отдельном процессе - PullRequest
0 голосов
/ 12 августа 2010

Я внедряю службу опроса, интерфейс которой выглядит следующим образом.

poller = Poller.new(SomeClass)
poller.start
poller.stop

Предполагается, что метод start должен непрерывно начинать выполнять запрос http и обновлять содержимое в базе данных.Как только start ed, процесс должен продолжаться до тех пор, пока он не будет stop ed.

Я понимаю, что реализация start должна появляться и запускаться в новом процессе.Я не совсем уверен, как этого добиться в Ruby.Мне нужно решение ruby ​​вместо решения, специфичного для ruby ​​Framework (Не для плагинов rails или расширений sinatra. Просто для гемов ruby).Я изучаю eventmachine и скворец-работающий.Я считаю, что eventmachine слишком велик, чтобы понимать его в коротком промежутке времени, и работа с ним - это плагин, а не самоцвет.Так что работать с приложением Ruby очень сложно.

Мне нужно руководство, как мне этого добиться.Есть указатели?Помогут примеры кода.

Редактировать

Решение для машин для обработки деталей или обработки звездочками предпочтительнее, чем нарезание резьбы / разветвление.

Ответы [ 3 ]

2 голосов
/ 12 августа 2010

Не можете ли вы использовать пример из Process#kill:

class Poller
  def initialize klass
    @klass = klass
  end

  def start
    @pid = fork do
      Signal.trap("HUP") { puts "Ouch!"; exit }
      instance = @klass.new
      # ... do some work ...
    end
  end

  def stop
    Process.kill("HUP", @pid)
    Process.wait
  end
end
0 голосов
/ 12 августа 2010

Рассматривали ли вы Демонов самоцвет?

0 голосов
/ 12 августа 2010
class Poller

    def start
       @thread = Thread.new { 
           #Your code here
       } 
    end


    def stop
       @thread.stop
    end

end
...