simple_job 0.1.0 → 0.2.0

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.
data/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,9 @@
1
1
  = Simple Job
2
2
 
3
+ == Version 0.2.0
4
+ * Added :max_executions option to SQSJobQueue#poll
5
+ * Bug fix to :replace_existing option of JobDefinition::register_simple_job declaration - wasn't properly leaving old definitions
6
+
3
7
  == Version 0.1.0
4
8
  * Added AWS CloudWatch monitors for job execution
5
9
  * Added :replace_existing option to register_simple_job
@@ -129,23 +129,25 @@ module JobDefinition
129
129
  def register_simple_job(options = {})
130
130
  default_type = self.name.split('::').last.underscore.to_sym
131
131
 
132
- replace_existing = options.delete(:replace_existing) || true
132
+ replace_existing = options.delete(:replace_existing)
133
+ replace_existing = true if replace_existing.nil?
133
134
 
134
- @definition = {
135
+ new_definition = {
135
136
  :class => self,
136
137
  :type => default_type,
137
138
  :versions => [ '1' ],
138
139
  }.merge(options)
139
140
 
140
- @definition[:type] = @definition[:type].to_sym
141
- @definition[:versions] = Array(@definition[:versions])
142
- @definition[:versions].collect! { |value| value.to_s }
141
+ new_definition[:type] = new_definition[:type].to_sym
142
+ new_definition[:versions] = Array(new_definition[:versions])
143
+ new_definition[:versions].collect! { |value| value.to_s }
143
144
 
144
145
  if replace_existing
145
- ::SimpleJob::JobDefinition.job_definitions.delete_if { |item| item[:type] == default_type }
146
+ ::SimpleJob::JobDefinition.job_definitions.delete(@definition)
147
+ @definition = new_definition
146
148
  end
147
149
 
148
- ::SimpleJob::JobDefinition.job_definitions << @definition
150
+ ::SimpleJob::JobDefinition.job_definitions << new_definition
149
151
  end
150
152
 
151
153
  def job_queue(queue_type = nil)
@@ -93,7 +93,8 @@ class SQSJobQueue < JobQueue
93
93
  :attributes => [ :sent_at, :receive_count, :first_received_at ],
94
94
  :raise_exceptions => false,
95
95
  :idle_timeout => nil,
96
- :poll_interval => DEFAULT_POLL_INTERVAL
96
+ :poll_interval => DEFAULT_POLL_INTERVAL,
97
+ :max_executions => nil
97
98
  }.merge(options)
98
99
 
99
100
  message_handler = block || lambda do |definition, message|
@@ -114,7 +115,9 @@ class SQSJobQueue < JobQueue
114
115
 
115
116
  last_message_at = Time.now
116
117
 
118
+ max_executions = options[:max_executions]
117
119
  loop do
120
+ break if max_executions && (max_executions <= 0)
118
121
  last_message = nil
119
122
  current_start_milliseconds = get_milliseconds
120
123
  current_job_type = 'unknown'
@@ -147,6 +150,7 @@ class SQSJobQueue < JobQueue
147
150
  logger.error(e.backtrace.join("\n "))
148
151
  end
149
152
  end
153
+ max_executions -= 1 if max_executions
150
154
  break if exit_next
151
155
  end
152
156
 
@@ -1,3 +1,3 @@
1
1
  module SimpleJob
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_job
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Dawson