From 4d76b8d4002751a0d7033c2f642f95676e73a474 Mon Sep 17 00:00:00 2001 From: Brandon Keepers Date: Sun, 6 Sep 2009 09:26:09 -0400 Subject: [PATCH] Rework script/delayed_job so it can be used as a plugin or a gem. Closes #2 --- generators/delayed_job/templates/script | 6 ++---- lib/delayed/command.rb | 15 +++++++-------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/generators/delayed_job/templates/script b/generators/delayed_job/templates/script index 276ba6d74..edf195985 100755 --- a/generators/delayed_job/templates/script +++ b/generators/delayed_job/templates/script @@ -1,7 +1,5 @@ #!/usr/bin/env ruby -# Daemons sets pwd to /, so we have to explicitly set RAILS_ROOT -RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')) - -require File.join(File.dirname(__FILE__), *%w(.. vendor plugins delayed_job lib delayed command)) +require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment')) +require 'delayed/command' Delayed::Command.new(ARGV).daemonize diff --git a/lib/delayed/command.rb b/lib/delayed/command.rb index 23bf457bd..f2670ff88 100644 --- a/lib/delayed/command.rb +++ b/lib/delayed/command.rb @@ -1,4 +1,3 @@ -require 'rubygems' require 'daemons' require 'optparse' @@ -44,14 +43,14 @@ def daemonize def run(worker_name = nil) Dir.chdir(RAILS_ROOT) - require File.join(RAILS_ROOT, 'config', 'environment') - # Replace the default logger - logger = Logger.new(File.join(RAILS_ROOT, 'log', 'delayed_job.log')) - logger.level = ActiveRecord::Base.logger.level - ActiveRecord::Base.logger = logger - ActiveRecord::Base.clear_active_connections! - Delayed::Worker.logger = logger + # Replace the default logger…too bad Rails doesn't make this easier + Rails.logger.instance_eval do + @log.reopen File.join(RAILS_ROOT, 'log', 'delayed_job.log') + end + Delayed::Worker.logger = Rails.logger + ActiveRecord::Base.connection.reconnect! + Delayed::Job.worker_name = "#{worker_name} #{Delayed::Job.worker_name}" Delayed::Worker.new(@options).start