Я использовал Delayed_job в прошлом.У меня есть старый проект, который выполняется на сервере, где я не могу обновить Ruby 1.8.6 до 1.8.7, и поэтому не могу использовать отложенное задание, поэтому я пытаюсь использовать BackgroundJobs http://codeforpeople.rubyforge.org/svn/bj/trunk/README
У меня это работает, так что моя работа работает, но что-то не так.Например, если я запускаю задание следующим образом:
jobs = Bj.submit "echo hi", :is_restartable => false, :limit => 1, :forever => false
Затем я вижу задание в таблице bj_job и вижу, что оно завершено вместе с 'hi' в stdout.Я также вижу только одну работу в таблице, и она не перезапускает ее.
По какой-то причине, если я делаю это:
jobs = Bj.submit "./script/runner ./jobs/calculate_mean_values.rb #{self.id}", :is_restartable => false, :limit => 1, :forever => false
Работа все еще завершается, как и ожидалось,тем не менее, он продолжает вставлять новые строки в таблицу bj_job, и метод будет запускаться снова и снова, пока я не остановлю свой сервер dev.Это то, как это должно работать?
Я использую Ruby 1.8.6 и Rails 2.1.2, и у меня нет возможности обновления.Я использую плагин Bj.
Поскольку мне просто нужно запустить процесс один раз после сохранения модели, у меня все работает, используя скрипт / runner, например, так:
system " RAILS_ENV=#{RAILS_ENV} ruby #{RAILS_ROOT}/script/runner 'CompositeGrid.calculate_values(#{self.id})' & "
Но хотелось бы знать, что я делаю что-то не так с Background Jobs,