rabbit_jobs 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,6 @@
2
2
 
3
3
  module RabbitJobs
4
4
  class ErrorMailer
5
- include RabbitJobs::Logger
6
-
7
5
  def self.enabled?
8
6
  !!RabbitJobs.config.mail_errors_from && !RabbitJobs.config.mail_errors_from.empty?
9
7
  end
@@ -30,7 +28,7 @@ module RabbitJobs
30
28
  begin
31
29
  letter.deliver
32
30
  rescue
33
- log $!.inspect
31
+ RJ.logger.error $!.inspect
34
32
  end
35
33
  end
36
34
  end
@@ -4,11 +4,9 @@ require 'digest/md5'
4
4
 
5
5
  module RabbitJobs::Job
6
6
  extend RabbitJobs::Helpers
7
- extend RabbitJobs::Logger
8
7
  extend self
9
8
 
10
9
  def self.included(base)
11
- include RabbitJobs::Logger
12
10
  base.extend (ClassMethods)
13
11
 
14
12
  def initialize(*perform_params)
@@ -21,7 +19,7 @@ module RabbitJobs::Job
21
19
  def run_perform
22
20
  if @child_pid = fork
23
21
  srand # Reseeding
24
- RabbitJobs::Logger.log "Forked #{@child_pid} at #{Time.now} to process #{self.class}.perform(#{ params.map(&:inspect).join(', ') })"
22
+ RJ.logger.info "Forked #{@child_pid} at #{Time.now} to process #{self.class}.perform(#{ params.map(&:inspect).join(', ') })"
25
23
  Process.wait(@child_pid)
26
24
  yield if block_given?
27
25
  else
@@ -32,11 +30,11 @@ module RabbitJobs::Job
32
30
  if defined?(MongoMapper)
33
31
  MongoMapper.database.connection.connect_to_master
34
32
  end
35
- # log 'before perform'
33
+ # RJ.logger.debug 'before perform'
36
34
  self.class.perform(*params)
37
- # log 'after perform'
35
+ # RJ.logger.debug 'after perform'
38
36
  rescue
39
- RabbitJobs::Logger.log($!.inspect) if RabbitJobs.config.error_log
37
+ RJ.logger.warn($!.inspect)
40
38
  RabbitJobs::ErrorMailer.send(self, $!)
41
39
 
42
40
  run_on_error_hooks($!)
@@ -113,10 +111,10 @@ module RabbitJobs::Job
113
111
  job.opts = encoded['opts']
114
112
  job
115
113
  rescue
116
- log "JOB INIT ERROR at #{Time.now.to_s}:"
117
- log $!.inspect
118
- log $!.backtrace
119
- log "message: #{payload.inspect}"
114
+ RJ.logger.error "JOB INIT ERROR at #{Time.now.to_s}:"
115
+ RJ.logger.error $!.inspect
116
+ RJ.logger.error $!.backtrace
117
+ RJ.logger.error "message: #{payload.inspect}"
120
118
  # Mailer.send(klass_name, params, $!)
121
119
  # raise $!
122
120
  end
@@ -7,7 +7,6 @@ require 'yaml'
7
7
  module RabbitJobs
8
8
  class Scheduler
9
9
  include AmqpHelpers
10
- include Logger
11
10
 
12
11
  attr_accessor :pidfile, :background, :schedule
13
12
 
@@ -33,12 +32,12 @@ module RabbitJobs
33
32
  # job should be scheduled regardless of what ENV['RAILS_ENV'] is set
34
33
  # to.
35
34
  if config['rails_env'].nil? || rails_env_matches?(config)
36
- log! "Scheduling #{name} "
35
+ RJ.logger.info "Scheduling #{name} "
37
36
  interval_defined = false
38
37
  interval_types = %w{cron every}
39
38
  interval_types.each do |interval_type|
40
39
  if !config[interval_type].nil? && config[interval_type].length > 0
41
- log "queueing #{config['class']} (#{name})"
40
+ RJ.logger.info "queueing #{config['class']} (#{name})"
42
41
  rufus_scheduler.send(interval_type, config[interval_type]) do
43
42
  publish_from_config(config)
44
43
  end
@@ -47,7 +46,7 @@ module RabbitJobs
47
46
  end
48
47
  end
49
48
  unless interval_defined
50
- log! "no #{interval_types.join(' / ')} found for #{config['class']} (#{name}) - skipping"
49
+ RJ.logger.warn "no #{interval_types.join(' / ')} found for #{config['class']} (#{name}) - skipping"
51
50
  end
52
51
  end
53
52
  end
@@ -65,10 +64,10 @@ module RabbitJobs
65
64
  params = args.is_a?(Hash) ? [args] : Array(args)
66
65
  queue = config['queue'] || config[:queue] || RabbitJobs.config.routing_keys.first
67
66
 
68
- log "publishing #{config}"
67
+ RJ.logger.info "publishing #{config}"
69
68
  RabbitJobs.publish_to(queue, klass_name.constantize, nil, *params)
70
69
  rescue
71
- log! "Failed to publish #{klass_name}:\n #{$!}\n params = #{params.inspect}"
70
+ RJ.logger.warn "Failed to publish #{klass_name}:\n #{$!}\n params = #{params.inspect}"
72
71
  end
73
72
 
74
73
  def rufus_scheduler
@@ -107,7 +106,7 @@ module RabbitJobs
107
106
  end
108
107
  end
109
108
 
110
- log "Scheduler started."
109
+ RJ.logger.info "Scheduler started."
111
110
 
112
111
  EM.add_periodic_timer(1) do
113
112
  check_shutdown.call
@@ -116,7 +115,7 @@ module RabbitJobs
116
115
  end
117
116
 
118
117
  def shutdown
119
- log "Stopping scheduler..."
118
+ RJ.logger.warn "Stopping scheduler..."
120
119
  @shutdown = true
121
120
  end
122
121
 
@@ -146,11 +145,11 @@ module RabbitJobs
146
145
 
147
146
  def kill_child
148
147
  if @job && @job.child_pid
149
- # log! "Killing child at #{@child}"
148
+ # RJ.logger.warn "Killing child at #{@child}"
150
149
  if Kernel.system("ps -o pid,state -p #{@job.child_pid}")
151
150
  Process.kill("KILL", @job.child_pid) rescue nil
152
151
  else
153
- # log! "Child #{@child} not found, restarting."
152
+ # RJ.logger.warn "Child #{@child} not found, restarting."
154
153
  # shutdown
155
154
  end
156
155
  end
@@ -2,8 +2,18 @@
2
2
  # will give you the resque tasks
3
3
 
4
4
  require 'rabbit_jobs'
5
+ require 'logger'
5
6
 
6
7
  namespace :rj do
8
+ def initialize_rj_daemon(daemon)
9
+ daemon.pidfile = ENV['PIDFILE']
10
+ daemon.background = %w(yes true).include? ENV['BACKGROUND']
11
+ RJ.logger = ::Logger.new(ENV['LOGFILE']) if ENV['LOGFILE']
12
+ RJ.logger.level = ENV['VERBOSE'] ? Logger::INFO : Logger::WARN
13
+
14
+ worker
15
+ end
16
+
7
17
  task :setup
8
18
 
9
19
  desc "Start a Rabbit Jobs worker"
@@ -11,30 +21,14 @@ namespace :rj do
11
21
  require 'rabbit_jobs'
12
22
 
13
23
  queues = (ENV['QUEUES'] || ENV['QUEUE']).to_s.split(',')
14
-
15
- begin
16
- worker = RabbitJobs::Worker.new(*queues)
17
- worker.pidfile = ENV['PIDFILE']
18
- worker.background = %w(yes true).include? ENV['BACKGROUND']
19
- RabbitJobs::Logger.verbose = true if ENV['VERBOSE']
20
- # worker.very_verbose = ENV['VVERBOSE']
21
- end
24
+ worker = initialize_rj_service(RJ::Worker.new(*queues))
22
25
 
23
26
  worker.work
24
27
  end
25
28
 
26
29
  desc "Start a Rabbit Jobs scheduler"
27
30
  task :scheduler => [ :preload, :setup ] do
28
-
29
- queues = (ENV['SCHEDULE']).to_s.split(',')
30
-
31
- begin
32
- scheduler = RabbitJobs::Scheduler.new(*queues)
33
- scheduler.pidfile = ENV['PIDFILE']
34
- scheduler.background = %w(yes true).include? ENV['BACKGROUND']
35
- RabbitJobs::Logger.verbose = true if ENV['VERBOSE']
36
- # worker.very_verbose = ENV['VVERBOSE']
37
- end
31
+ scheduler = initialize_rj_service(RabbitJobs::Scheduler.new)
38
32
 
39
33
  scheduler.work
40
34
  end
@@ -1,3 +1,3 @@
1
1
  module RabbitJobs
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -3,7 +3,6 @@
3
3
  module RabbitJobs
4
4
  class Worker
5
5
  include AmqpHelpers
6
- include Logger
7
6
 
8
7
  attr_accessor :pidfile, :background
9
8
 
@@ -39,8 +38,8 @@ module RabbitJobs
39
38
 
40
39
  check_shutdown = Proc.new {
41
40
  if @shutdown
42
- log "Processed jobs: #{processed_count}"
43
- log "Stopping worker..."
41
+ RJ.logger.info "Processed jobs: #{processed_count}"
42
+ RJ.logger.info "Stopping worker..."
44
43
 
45
44
  connection.close {
46
45
  File.delete(self.pidfile) if self.pidfile
@@ -52,7 +51,7 @@ module RabbitJobs
52
51
  queues.each do |routing_key|
53
52
  queue = make_queue(exchange, routing_key)
54
53
 
55
- log "Worker ##{Process.pid} <= #{exchange.name}##{routing_key}"
54
+ RJ.logger.info "Worker ##{Process.pid} <= #{exchange.name}##{routing_key}"
56
55
 
57
56
  explicit_ack = !!RJ.config[:queues][routing_key][:ack]
58
57
 
@@ -63,7 +62,7 @@ module RabbitJobs
63
62
  @job.run_perform
64
63
  processed_count += 1
65
64
  else
66
- log "Job expired: #{@job.inspect}"
65
+ RJ.logger.info "Job expired: #{@job.inspect}"
67
66
  end
68
67
 
69
68
  metadata.ack if explicit_ack
@@ -115,11 +114,11 @@ module RabbitJobs
115
114
 
116
115
  def kill_child
117
116
  if @job && @job.child_pid
118
- # log! "Killing child at #{@child}"
117
+ # RJ.logger.info "Killing child at #{@child}"
119
118
  if Kernel.system("ps -o pid,state -p #{@job.child_pid}")
120
119
  Process.kill("KILL", @job.child_pid) rescue nil
121
120
  else
122
- # log! "Child #{@child} not found, restarting."
121
+ # RJ.logger.info "Child #{@child} not found, restarting."
123
122
  # shutdown
124
123
  end
125
124
  end
data/lib/rabbit_jobs.rb CHANGED
@@ -5,7 +5,6 @@ require 'rabbit_jobs/version'
5
5
  require 'rabbit_jobs/helpers'
6
6
  require 'rabbit_jobs/amqp_helpers'
7
7
  require 'rabbit_jobs/configuration'
8
- require 'rabbit_jobs/logger'
9
8
  require 'rabbit_jobs/error_mailer'
10
9
 
11
10
  require 'rabbit_jobs/job'
@@ -13,6 +12,8 @@ require 'rabbit_jobs/publisher'
13
12
  require 'rabbit_jobs/worker'
14
13
  require 'rabbit_jobs/scheduler'
15
14
 
15
+ require 'logger'
16
+
16
17
  module RabbitJobs
17
18
  extend self
18
19
 
@@ -23,6 +24,11 @@ module RabbitJobs
23
24
  def publish_to(routing_key, klass, opts = {}, *params)
24
25
  RabbitJobs::Publisher.publish_to(routing_key, klass, opts, *params)
25
26
  end
27
+
28
+ attr_writer :logger
29
+ def logger
30
+ @logger ||= Logger.new $stdout
31
+ end
26
32
  end
27
33
 
28
34
  RJ = RabbitJobs
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabbit_jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-02-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: amqp
16
- requirement: &70275283417720 !ruby/object:Gem::Requirement
16
+ requirement: &70110815973060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.9'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70275283417720
24
+ version_requirements: *70110815973060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70275283417300 !ruby/object:Gem::Requirement
27
+ requirement: &70110815972640 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70275283417300
35
+ version_requirements: *70110815972640
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rufus-scheduler
38
- requirement: &70275283416760 !ruby/object:Gem::Requirement
38
+ requirement: &70110815972100 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '2.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70275283416760
46
+ version_requirements: *70110815972100
47
47
  description: Background jobs on RabbitMQ
48
48
  email:
49
49
  - lazureykis@gmail.com
@@ -64,7 +64,6 @@ files:
64
64
  - lib/rabbit_jobs/error_mailer.rb
65
65
  - lib/rabbit_jobs/helpers.rb
66
66
  - lib/rabbit_jobs/job.rb
67
- - lib/rabbit_jobs/logger.rb
68
67
  - lib/rabbit_jobs/publisher.rb
69
68
  - lib/rabbit_jobs/scheduler.rb
70
69
  - lib/rabbit_jobs/tasks.rb
@@ -81,7 +80,6 @@ files:
81
80
  - spec/spec_helper.rb
82
81
  - spec/unit/configuration_spec.rb
83
82
  - spec/unit/job_spec.rb
84
- - spec/unit/logger_spec.rb
85
83
  - spec/unit/mailer_spec.rb
86
84
  - spec/unit/rabbit_jobs_spec.rb
87
85
  - spec/unit/worker_spec.rb
@@ -119,7 +117,6 @@ test_files:
119
117
  - spec/spec_helper.rb
120
118
  - spec/unit/configuration_spec.rb
121
119
  - spec/unit/job_spec.rb
122
- - spec/unit/logger_spec.rb
123
120
  - spec/unit/mailer_spec.rb
124
121
  - spec/unit/rabbit_jobs_spec.rb
125
122
  - spec/unit/worker_spec.rb
@@ -1,18 +0,0 @@
1
- module RabbitJobs
2
- module Logger
3
- extend self
4
-
5
- def log(string)
6
- puts string
7
- end
8
-
9
- def log!(string)
10
- @@verbose ||= false
11
- log(string) if RabbitJobs::Logger.verbose
12
- end
13
-
14
- class << self
15
- attr_accessor :verbose
16
- end
17
- end
18
- end
@@ -1,23 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'spec_helper'
3
-
4
- describe RabbitJobs::Logger do
5
- it '#log should write messages to stdout' do
6
- mock($stdout).puts "hello"
7
- RabbitJobs::Logger.log("hello")
8
- end
9
-
10
- it '#log! should not write messages to stdout in normal mode' do
11
- RabbitJobs::Logger.verbose = false
12
-
13
- dont_allow(RabbitJobs::Logger).log("hello")
14
- RabbitJobs::Logger.log!("hello")
15
- end
16
-
17
- it '#log! should write messages to stdout in verbose mode' do
18
- RabbitJobs::Logger.verbose = true
19
-
20
- mock(RabbitJobs::Logger).log("hello")
21
- RabbitJobs::Logger.log!("hello")
22
- end
23
- end