rocketjob 2.0.0.rc2 → 2.0.0.rc3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6eb90dc1e3aea713b4d981636208f44a0da52e6c
4
- data.tar.gz: 1f9f590f2789f050d736af772843b78bd98d1795
3
+ metadata.gz: 272892209b4b987a90ec99fe808e7197588c1fea
4
+ data.tar.gz: 560ead0b08ab42a2fc6cda4de2f3ed107199fce7
5
5
  SHA512:
6
- metadata.gz: 3ab4508ac667d557a4eee4533d4bdbb15c8bb6b10c35a8f9f1f71e53e33f0a1276c7b55b6ba80743169efd19bc6f240311e678a527cdd469a5bed52d45406e66
7
- data.tar.gz: 201ed97e4992979ada9af839f6951c5c3f8ae373ce6a93d07d6356571f07fc91b5319b8eb2915e2c1dc6be50ef56d845136479db17f7907528ffdf9822bda01a
6
+ metadata.gz: b7c162229dfaed223d3346f6a31613026fd8dff5dcbd590e11b9b4569e98b65ed9fa31850db395248d54be9005017cf7bb28c12517a559a38e84f44b90146656
7
+ data.tar.gz: 0614a2ccfdcece55f6480d880eef065e8034629695f7678e21bc6212231351c24ebf1cab06e53553f7102479554eca419eadd208a4716b7a83a53e25ab56bc46
@@ -305,10 +305,12 @@ module RocketJob
305
305
  # Queues the job for the supplied pathname
306
306
  def later(pathname)
307
307
  if klass = job_class
308
- job = klass.new(properties.merge(arguments: arguments))
309
- upload_file(job, pathname)
310
- job.save!
311
- job
308
+ logger.benchmark_info "Enqueued: #{name}, Job class: #{job_class_name}" do
309
+ job = klass.new(properties.merge(arguments: arguments))
310
+ upload_file(job, pathname)
311
+ job.save!
312
+ job
313
+ end
312
314
  else
313
315
  raise(ArgumentError, "Cannot instantiate a class for: #{job_class_name.inspect}")
314
316
  end
@@ -6,17 +6,20 @@ require 'mongo_mapper'
6
6
 
7
7
  module RocketJob
8
8
  module Plugins
9
- # Prevent more than one instance of this job class from running at a time
9
+ # Base class for storing models in MongoDB
10
10
  module Document
11
+ autoload :Static, 'rocket_job/plugins/document/static'
12
+
11
13
  extend ActiveSupport::Concern
12
14
  include MongoMapper::Document
15
+ include RocketJob::Plugins::Document::Static
13
16
 
14
17
  included do
15
18
  # Add after_initialize & after_find callbacks
16
19
  define_model_callbacks :initialize, :find, :only => [:after]
17
20
 
18
21
  # Prevent data in MongoDB from re-defining the model behavior
19
- #self.static_keys = true
22
+ self.static_keys = true
20
23
 
21
24
  # Turn off embedded callbacks. Slow and not used for Jobs
22
25
  embedded_callbacks_off
@@ -0,0 +1,53 @@
1
+ module RocketJob
2
+ module Plugins
3
+ # Extension for Document to implement static keys
4
+ # Remove when new MongoMapper gem is released
5
+ module Document
6
+ module Static
7
+ extend ActiveSupport::Concern
8
+
9
+ module ClassMethods
10
+ attr_writer :static_keys
11
+
12
+ def static_keys
13
+ @static_keys || false
14
+ end
15
+
16
+ def embedded_keys
17
+ @embedded_keys ||= embedded_associations.collect(&:as)
18
+ end
19
+
20
+ def embedded_key?(key)
21
+ embedded_keys.include?(key.to_sym)
22
+ end
23
+ end
24
+
25
+ def read_key(name)
26
+ if !self.class.static_keys || self.class.key?(name)
27
+ super
28
+ else
29
+ raise MissingKeyError, "Tried to read the key #{name.inspect}, but no key was defined. Either define key :#{name} or set self.static_keys = false"
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def write_key(name, value)
36
+ if !self.class.static_keys || self.class.key?(name)
37
+ super
38
+ else
39
+ raise MissingKeyError, "Tried to write the key #{name.inspect}, but no key was defined. Either define key :#{name} or set self.static_keys = false"
40
+ end
41
+ end
42
+
43
+ def load_from_database(attrs, with_cast = false)
44
+ return super if !self.class.static_keys || !attrs.respond_to?(:each)
45
+
46
+ attrs = attrs.select { |key, _| self.class.key?(key) || self.class.embedded_key?(key) }
47
+
48
+ super(attrs, with_cast)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -187,6 +187,7 @@ module RocketJob
187
187
 
188
188
  # Add to user definable properties in Dirmon Entry
189
189
  def self.public_rocket_job_properties(*properties)
190
+ properties.each { |property| raise("Invalid public_rocket_job_property: #{property.inspect}") unless key?(property)}
190
191
  rocket_job_properties.concat(properties).uniq!
191
192
  end
192
193
 
@@ -237,6 +238,7 @@ module RocketJob
237
238
  def as_json
238
239
  attrs = serializable_hash(methods: [:seconds, :duration])
239
240
  attrs.delete('result') unless collect_output?
241
+ attrs.delete('failure_count') unless failure_count > 0
240
242
  case
241
243
  when queued?
242
244
  attrs.delete('started_at')
@@ -247,6 +249,9 @@ module RocketJob
247
249
  attrs.delete('completed_at')
248
250
  attrs.delete('result')
249
251
  attrs
252
+ when completed?
253
+ attrs.delete('percent_complete')
254
+ attrs
250
255
  when paused?
251
256
  attrs.delete('completed_at')
252
257
  attrs.delete('result')
@@ -269,8 +274,6 @@ module RocketJob
269
274
  def status(time_zone = 'Eastern Time (US & Canada)')
270
275
  h = as_json
271
276
  h.delete('seconds')
272
- h.delete('percent_complete') if completed?
273
- h.delete('failure_count') unless failure_count > 0
274
277
  h.dup.each_pair do |k, v|
275
278
  case
276
279
  when v.is_a?(Time)
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module RocketJob #:nodoc
3
- VERSION = '2.0.0.rc2'
3
+ VERSION = '2.0.0.rc3'
4
4
  end
@@ -45,7 +45,7 @@ module RocketJob
45
45
  key :started_at, Time
46
46
 
47
47
  # The heartbeat information for this worker
48
- one :heartbeat, class_name: 'RocketJob::Heartbeat'
48
+ has_one :heartbeat, class_name: 'RocketJob::Heartbeat'
49
49
 
50
50
  # Current state
51
51
  # Internal use only. Do not set this field directly
@@ -196,7 +196,7 @@ module RocketJob
196
196
  # - The worker is no longer able to communicate with the MongoDB Server
197
197
  def zombie?(missed = 4)
198
198
  return false unless running?
199
- return true if heartbeat.updated_at.nil?
199
+ return true if heartbeat.nil? || heartbeat.updated_at.nil?
200
200
  dead_seconds = Config.instance.heartbeat_seconds * missed
201
201
  (Time.now - heartbeat.updated_at) >= dead_seconds
202
202
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocketjob
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc2
4
+ version: 2.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-09 00:00:00.000000000 Z
11
+ date: 2016-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aasm
@@ -134,6 +134,7 @@ files:
134
134
  - lib/rocket_job/jobs/dirmon_job.rb
135
135
  - lib/rocket_job/jobs/simple_job.rb
136
136
  - lib/rocket_job/plugins/document.rb
137
+ - lib/rocket_job/plugins/document/static.rb
137
138
  - lib/rocket_job/plugins/job/callbacks.rb
138
139
  - lib/rocket_job/plugins/job/defaults.rb
139
140
  - lib/rocket_job/plugins/job/logger.rb