delayed_job 3.0.0 работает в консоли, но не WEBrick - PullRequest
2 голосов
/ 26 января 2012

Среда:

  Rails => 3.1.0
  delayed_job => 3.0.1
  delayed_job_active_record => 0.3.1
  WEBrick => 1.3.1
  ruby => 1.9.2

Код:

class Comment < ActiveRecord::Base
  def tweet(tweet_msg)
    client = Twitter::Client.new
    client.update(tweet_msg)
  end

  after_save :tweet_comment
  def tweet_comment
    self.delay.tweet('test tweet')
  end
end

Консоль:

Из консоли я вставляю в таблицу delayed_jobs следующее, и функция tweet_as_site получаетназывается.Все работает нормально ....

  SQL (0.5ms)  INSERT INTO `delayed_jobs` (`attempts`, `created_at`, `failed_at`, `handler`, `last_error`, `locked_at`, `locked_by`, `priority`, `queue`, `run_at`, `updated_at`) VALUES (0, '2012-01-25 21:21:48', NULL, '--- !ruby/object:Delayed::PerformableMethod\nobject: !ruby/ActiveRecord:Comment\n attributes:\n id: 121\n title: \'\'\n comment: aa\n commentable_id: 2296\n commentable_type: Game\n user_id: 1\n created_at: 2012-01-25 21:19:19.000000000Z\n updated_at: 2012-01-25 21:19:19.000000000Z\nmethod_name: :tweet\nargs:\n- test tweet\n', NULL, NULL, NULL, 0, NULL, '2012-01-25 21:21:48', '2012-01-25 21:21:48')

Log:
  2012-01-25T13:21:52-0800: [Worker(delayed_job host:ubuntu pid:13063)] Comment#tweet completed after 1.6850
  2012-01-25T13:21:52-0800: [Worker(delayed_job host:ubuntu pid:13063)] 1 jobs processed at 0.5913 j/s, 0 failed ...

Затем, когда я делаю это через веб-сервер WEBrick, следующий sql вставляется в таблицу delayed_jobs ...

  SQL (0.4ms)  INSERT INTO `delayed_jobs` (`attempts`, `created_at`, `failed_at`, `handler`, `last_error`, `locked_at`, `locked_by`, `priority`, `queue`, `run_at`, `updated_at`) VALUES (0, '2012-01-25 21:19:19', NULL, '--- !ruby/object:Delayed::PerformableMethod\nattributes:\n id: 121\n title: \'\'\n comment: aa\n commentable_id: 2296\n commentable_type: Game\n user_id: 1\n created_at: 2012-01-25 21:19:19.759253106Z\n updated_at: 2012-01-25 21:19:19.759253106Z\n', NULL, NULL, NULL, 0, NULL, '2012-01-25 21:19:19', '2012-01-25 21:19:19')
Log:
  2012-01-25T13:19:20-0800: [Worker(delayed_job host:ubuntu pid:13063)] NilClass# completed after 0.0083
  2012-01-25T13:19:20-0800: [Worker(delayed_job host:ubuntu pid:13063)] 1 jobs processed at 55.5559 j/s, 0 failed ...

Вставка изконсоль включает в себя «method_name:: tweet \ nargs: \ n- test tweet» в обработчике yaml, но эта часть отсутствует при выполнении из WEBrick.

Некоторые примечания ...

  1. Я пробовал это как с .delay, так и handle_asynchronously, но ни одна из них не работает.
  2. Он работает с WEBrick для некоторых объектов, таких как Twitter :: Client, но не работает с моимисобственные модели.
...