rocketjob 5.4.0.beta1 → 6.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -5
  3. data/bin/rocketjob_batch_perf +1 -1
  4. data/bin/rocketjob_perf +1 -1
  5. data/lib/rocket_job/batch.rb +3 -0
  6. data/lib/rocket_job/batch/categories.rb +341 -0
  7. data/lib/rocket_job/batch/io.rb +128 -60
  8. data/lib/rocket_job/batch/model.rb +20 -68
  9. data/lib/rocket_job/batch/performance.rb +19 -7
  10. data/lib/rocket_job/batch/statistics.rb +34 -12
  11. data/lib/rocket_job/batch/tabular.rb +2 -0
  12. data/lib/rocket_job/batch/tabular/input.rb +8 -6
  13. data/lib/rocket_job/batch/tabular/output.rb +4 -2
  14. data/lib/rocket_job/batch/throttle_running_workers.rb +8 -17
  15. data/lib/rocket_job/batch/worker.rb +27 -24
  16. data/lib/rocket_job/category/base.rb +78 -0
  17. data/lib/rocket_job/category/input.rb +110 -0
  18. data/lib/rocket_job/category/output.rb +25 -0
  19. data/lib/rocket_job/cli.rb +25 -17
  20. data/lib/rocket_job/dirmon_entry.rb +22 -12
  21. data/lib/rocket_job/event.rb +1 -1
  22. data/lib/rocket_job/extensions/iostreams/path.rb +32 -0
  23. data/lib/rocket_job/extensions/mongoid/contextual/mongo.rb +2 -2
  24. data/lib/rocket_job/extensions/mongoid/factory.rb +4 -12
  25. data/lib/rocket_job/extensions/mongoid/stringified_symbol.rb +50 -0
  26. data/lib/rocket_job/extensions/psych/yaml_tree.rb +8 -0
  27. data/lib/rocket_job/extensions/rocket_job_adapter.rb +2 -2
  28. data/lib/rocket_job/jobs/dirmon_job.rb +2 -2
  29. data/lib/rocket_job/jobs/housekeeping_job.rb +7 -7
  30. data/lib/rocket_job/jobs/on_demand_batch_job.rb +15 -6
  31. data/lib/rocket_job/jobs/on_demand_job.rb +1 -2
  32. data/lib/rocket_job/jobs/performance_job.rb +3 -1
  33. data/lib/rocket_job/jobs/re_encrypt/relational_job.rb +103 -96
  34. data/lib/rocket_job/jobs/upload_file_job.rb +44 -8
  35. data/lib/rocket_job/lookup_collection.rb +69 -0
  36. data/lib/rocket_job/plugins/job/model.rb +25 -50
  37. data/lib/rocket_job/plugins/job/throttle.rb +2 -2
  38. data/lib/rocket_job/plugins/job/throttle_running_jobs.rb +12 -4
  39. data/lib/rocket_job/plugins/job/worker.rb +2 -7
  40. data/lib/rocket_job/plugins/restart.rb +12 -5
  41. data/lib/rocket_job/plugins/state_machine.rb +2 -1
  42. data/lib/rocket_job/plugins/throttle_dependent_jobs.rb +38 -0
  43. data/lib/rocket_job/ractor_worker.rb +42 -0
  44. data/lib/rocket_job/server/model.rb +1 -1
  45. data/lib/rocket_job/sliced.rb +15 -70
  46. data/lib/rocket_job/sliced/bzip2_output_slice.rb +2 -2
  47. data/lib/rocket_job/sliced/input.rb +1 -1
  48. data/lib/rocket_job/sliced/slice.rb +5 -13
  49. data/lib/rocket_job/sliced/slices.rb +14 -2
  50. data/lib/rocket_job/sliced/writer/output.rb +33 -45
  51. data/lib/rocket_job/subscribers/server.rb +1 -1
  52. data/lib/rocket_job/thread_worker.rb +46 -0
  53. data/lib/rocket_job/throttle_definitions.rb +7 -1
  54. data/lib/rocket_job/version.rb +1 -1
  55. data/lib/rocket_job/worker.rb +21 -55
  56. data/lib/rocket_job/worker_pool.rb +5 -7
  57. data/lib/rocketjob.rb +53 -43
  58. metadata +35 -26
  59. data/lib/rocket_job/extensions/mongoid/remove_warnings.rb +0 -12
  60. data/lib/rocket_job/jobs/on_demand_batch_tabular_job.rb +0 -28
@@ -33,8 +33,8 @@ module RocketJob
33
33
  def serialize_records
34
34
  return [] if @records.nil? || @records.empty?
35
35
 
36
- lines = records.to_a.join("\n")
37
- s = StringIO.new
36
+ lines = records.to_a.join("\n") + "\n"
37
+ s = StringIO.new
38
38
  IOStreams::Bzip2::Writer.stream(s) { |io| io.write(lines) }
39
39
  BSON::Binary.new(s.string)
40
40
  end
@@ -139,7 +139,7 @@ module RocketJob
139
139
  document = all.queued.
140
140
  sort("_id" => 1).
141
141
  find_one_and_update(
142
- {"$set" => {worker_name: worker_name, state: :running, started_at: Time.now}},
142
+ {"$set" => {worker_name: worker_name, state: "running", started_at: Time.now}},
143
143
  return_document: :after
144
144
  )
145
145
  document.collection_name = collection_name if document
@@ -33,7 +33,7 @@ module RocketJob
33
33
  #
34
34
 
35
35
  # Current state, as set by AASM
36
- field :state, type: Symbol, default: :queued
36
+ field :state, type: Mongoid::StringifiedSymbol, default: :queued
37
37
 
38
38
  # When processing started on this slice
39
39
  field :started_at, type: Time
@@ -139,18 +139,10 @@ module RocketJob
139
139
 
140
140
  # Returns [Hash] the slice as a Hash for storage purposes
141
141
  # Compresses / Encrypts the slice according to the job setting
142
- if ::Mongoid::VERSION.to_i >= 6
143
- def as_attributes
144
- attrs = super
145
- attrs["records"] = serialize_records if @records
146
- attrs
147
- end
148
- else
149
- def as_document
150
- attrs = super
151
- attrs["records"] = serialize_records if @records
152
- attrs
153
- end
142
+ def as_attributes
143
+ attrs = super
144
+ attrs["records"] = serialize_records if @records
145
+ attrs
154
146
  end
155
147
 
156
148
  def inspect
@@ -50,8 +50,8 @@ module RocketJob
50
50
 
51
51
  # Returns output slices in the order of their id
52
52
  # which is usually the order in which they were written.
53
- def each
54
- all.sort(id: 1).each { |document| yield(document) }
53
+ def each(&block)
54
+ all.sort(id: 1).each(&block)
55
55
  end
56
56
 
57
57
  # Insert a new slice into the collection
@@ -96,6 +96,17 @@ module RocketJob
96
96
  slice
97
97
  end
98
98
 
99
+ # Append to an existing slice if already present
100
+ def append(slice, input_slice)
101
+ existing_slice = all.where(id: input_slice.id).first
102
+ return insert(slice, input_slice) unless existing_slice
103
+
104
+ extra_records = slice.is_a?(Slice) ? slice.records : slice
105
+ existing_slice.records = existing_slice.records + extra_records
106
+ existing_slice.save!
107
+ existing_slice
108
+ end
109
+
99
110
  alias << insert
100
111
 
101
112
  # Index for find_and_modify only if it is not already present
@@ -139,6 +150,7 @@ module RocketJob
139
150
  def last
140
151
  all.sort("_id" => -1).first
141
152
  end
153
+
142
154
  # rubocop:enable Style/RedundantSort
143
155
 
144
156
  # Returns [Array<Struct>] grouped exceptions by class name,
@@ -1,30 +1,37 @@
1
1
  module RocketJob
2
2
  module Sliced
3
3
  module Writer
4
- # Internal class for writing categorized results into output slices
5
- class Output
4
+ class Null
6
5
  attr_reader :job, :categorized_records
7
- attr_accessor :input_slice
8
-
9
- # Collect output results and write to output collections
10
- # iff job is collecting output
11
- # Notes:
12
- # Nothing is saved if an exception is raised inside the block
13
- def self.collect(job, input_slice = nil)
14
- if job.collect_output?
15
- writer = new(job, input_slice)
16
- yield(writer)
17
- writer.close
18
- else
19
- writer = NullWriter.new(job, input_slice)
20
- yield(writer)
21
- end
22
- end
6
+ attr_accessor :input_slice, :append
23
7
 
24
- def initialize(job, input_slice = nil)
8
+ def initialize(job, input_slice: nil, append: false)
25
9
  @job = job
26
10
  @input_slice = input_slice
27
11
  @categorized_records = {}
12
+ @append = append
13
+ end
14
+
15
+ def <<(_)
16
+ # noop
17
+ end
18
+
19
+ def close
20
+ # noop
21
+ end
22
+ end
23
+
24
+ # Internal class for writing categorized results into output slices
25
+ class Output < Null
26
+ # Collect output results and write to output collections
27
+ # iff job is collecting output
28
+ # Notes:
29
+ # Partial slices are saved when an exception is raised inside the block
30
+ def self.collect(job, **args)
31
+ writer = job.output_categories.present? ? new(job, **args) : Null.new(job, **args)
32
+ yield(writer)
33
+ ensure
34
+ writer&.close
28
35
  end
29
36
 
30
37
  # Writes the supplied result, RocketJob::Batch::Result or RocketJob::Batch::Results
@@ -40,7 +47,8 @@ module RocketJob
40
47
  # Write categorized results to their relevant collections
41
48
  def close
42
49
  categorized_records.each_pair do |category, results|
43
- job.output(category).insert(results, input_slice)
50
+ collection = job.output(category)
51
+ append ? collection.append(results, input_slice) : collection.insert(results, input_slice)
44
52
  end
45
53
  end
46
54
 
@@ -48,33 +56,13 @@ module RocketJob
48
56
 
49
57
  # Stores the categorized result from one result
50
58
  def extract_categorized_result(result)
51
- category = :main
52
- value = result
59
+ named_category = :main
60
+ value = result
53
61
  if result.is_a?(RocketJob::Batch::Result)
54
- category = result.category
55
- value = result.value
56
- raise(ArgumentError, "Invalid RocketJob Output Category: #{category}") if job.output_categories.exclude?(category)
62
+ named_category = result.category
63
+ value = result.value
57
64
  end
58
- (categorized_records[category] ||= []) << value unless value.nil? && !job.collect_nil_output?
59
- end
60
- end
61
-
62
- class NullWriter
63
- attr_reader :job, :categorized_records
64
- attr_accessor :input_slice
65
-
66
- def initialize(job, input_slice = nil)
67
- @job = job
68
- @input_slice = input_slice
69
- @categorized_records = {}
70
- end
71
-
72
- def <<(_)
73
- # noop
74
- end
75
-
76
- def close
77
- # noop
65
+ (categorized_records[named_category] ||= []) << value unless value.nil? && !job.output_category(named_category).nils
78
66
  end
79
67
  end
80
68
  end
@@ -17,7 +17,7 @@ module RocketJob
17
17
 
18
18
  supervisor.logger.info("Stopping Pool")
19
19
  supervisor.worker_pool.stop
20
- unless supervisor.worker_pool.living_count == 0
20
+ unless supervisor.worker_pool.living_count.zero?
21
21
  supervisor.logger.info("Giving pool #{wait_timeout} seconds to terminate")
22
22
  sleep(wait_timeout)
23
23
  end
@@ -0,0 +1,46 @@
1
+ require "concurrent"
2
+ module RocketJob
3
+ # ThreadWorker
4
+ #
5
+ # A worker runs on a single operating system thread.
6
+ # Is usually started under a Rocket Job server process.
7
+ class ThreadWorker < Worker
8
+ attr_reader :thread
9
+
10
+ def initialize(id:, server_name:)
11
+ super(id: id, server_name: server_name)
12
+ @shutdown = Concurrent::Event.new
13
+ @thread = Thread.new { run }
14
+ end
15
+
16
+ def alive?
17
+ @thread.alive?
18
+ end
19
+
20
+ def backtrace
21
+ @thread.backtrace
22
+ end
23
+
24
+ def join(*args)
25
+ @thread.join(*args)
26
+ end
27
+
28
+ # Send each active worker the RocketJob::ShutdownException so that stops processing immediately.
29
+ def kill
30
+ @thread.raise(Shutdown, "Shutdown due to kill request for worker: #{name}") if @thread.alive?
31
+ end
32
+
33
+ def shutdown?
34
+ @shutdown.set?
35
+ end
36
+
37
+ def shutdown!
38
+ @shutdown.set
39
+ end
40
+
41
+ # Returns [true|false] whether the shutdown indicator was set
42
+ def wait_for_shutdown?(timeout = nil)
43
+ @shutdown.wait(timeout)
44
+ end
45
+ end
46
+ end
@@ -1,6 +1,6 @@
1
1
  module RocketJob
2
2
  class ThrottleDefinitions
3
- attr_reader :throttles
3
+ attr_accessor :throttles
4
4
 
5
5
  def initialize
6
6
  @throttles = []
@@ -35,5 +35,11 @@ module RocketJob
35
35
  end
36
36
  nil
37
37
  end
38
+
39
+ def deep_dup
40
+ new_defination = dup
41
+ new_defination.throttles = throttles.map(&:dup)
42
+ new_defination
43
+ end
38
44
  end
39
45
  end
@@ -1,3 +1,3 @@
1
1
  module RocketJob
2
- VERSION = "5.4.0.beta1".freeze
2
+ VERSION = "6.0.0.rc2".freeze
3
3
  end
@@ -1,5 +1,3 @@
1
- require "concurrent"
2
- require "forwardable"
3
1
  module RocketJob
4
2
  # Worker
5
3
  #
@@ -7,12 +5,9 @@ module RocketJob
7
5
  # Is usually started under a Rocket Job server process.
8
6
  class Worker
9
7
  include SemanticLogger::Loggable
10
- include ActiveSupport::Callbacks
11
-
12
- define_callbacks :running
13
8
 
14
9
  attr_accessor :id, :current_filter
15
- attr_reader :thread, :name, :inline, :server_name
10
+ attr_reader :name, :server_name
16
11
 
17
12
  # Raised when a worker is killed so that it shutdown immediately, yet cleanly.
18
13
  #
@@ -21,59 +16,41 @@ module RocketJob
21
16
  class Shutdown < RuntimeError
22
17
  end
23
18
 
24
- def self.before_running(*filters, &blk)
25
- set_callback(:running, :before, *filters, &blk)
26
- end
27
-
28
- def self.after_running(*filters, &blk)
29
- set_callback(:running, :after, *filters, &blk)
30
- end
31
-
32
- def self.around_running(*filters, &blk)
33
- set_callback(:running, :around, *filters, &blk)
34
- end
35
-
36
- def initialize(id: 0, server_name: "inline:0", inline: false)
19
+ def initialize(id: 0, server_name: "inline:0")
37
20
  @id = id
38
21
  @server_name = server_name
39
- @shutdown = Concurrent::Event.new
40
22
  @name = "#{server_name}:#{id}"
41
23
  @re_check_start = Time.now
42
24
  @current_filter = Config.filter || {}
43
- @thread = Thread.new { run } unless inline
44
- @inline = inline
45
25
  end
46
26
 
47
27
  def alive?
48
- inline ? true : @thread.alive?
28
+ true
49
29
  end
50
30
 
51
31
  def backtrace
52
- inline ? Thread.current.backtrace : @thread.backtrace
32
+ Thread.current.backtrace
53
33
  end
54
34
 
55
- def join(*args)
56
- @thread.join(*args) unless inline
35
+ def join(*_args)
36
+ true
57
37
  end
58
38
 
59
- # Send each active worker the RocketJob::ShutdownException so that stops processing immediately.
60
39
  def kill
61
- return true if inline
62
-
63
- @thread.raise(Shutdown, "Shutdown due to kill request for worker: #{name}") if @thread.alive?
40
+ true
64
41
  end
65
42
 
66
43
  def shutdown?
67
- @shutdown.set?
44
+ false
68
45
  end
69
46
 
70
47
  def shutdown!
71
- @shutdown.set
48
+ true
72
49
  end
73
50
 
74
51
  # Returns [true|false] whether the shutdown indicator was set
75
- def wait_for_shutdown?(timeout = nil)
76
- @shutdown.wait(timeout)
52
+ def wait_for_shutdown?(_timeout = nil)
53
+ false
77
54
  end
78
55
 
79
56
  # Process jobs until it shuts down
@@ -146,6 +123,8 @@ module RocketJob
146
123
 
147
124
  # Should this job be throttled?
148
125
  next if job.fail_on_exception! { throttled_job?(job) }
126
+ # Job failed during throttle execution?
127
+ next if job.failed?
149
128
 
150
129
  # Start this job!
151
130
  job.fail_on_exception! { job.start!(name) }
@@ -171,27 +150,14 @@ module RocketJob
171
150
  # Applies the current filter to exclude filtered jobs.
172
151
  #
173
152
  # Returns nil if no jobs are available for processing.
174
- if Mongoid::VERSION.to_f >= 7.1
175
- def find_and_assign_job
176
- SemanticLogger.silence(:info) do
177
- scheduled = RocketJob::Job.where(run_at: nil).or(:run_at.lte => Time.now)
178
- working = RocketJob::Job.queued.or(state: :running, sub_state: :processing)
179
- query = RocketJob::Job.and(working, scheduled)
180
- query = query.and(current_filter) unless current_filter.blank?
181
- update = {"$set" => {"worker_name" => name, "state" => "running"}}
182
- query.sort(priority: 1, _id: 1).find_one_and_update(update, bypass_document_validation: true)
183
- end
184
- end
185
- else
186
- def find_and_assign_job
187
- SemanticLogger.silence(:info) do
188
- scheduled = {"$or" => [{run_at: nil}, {:run_at.lte => Time.now}]}
189
- working = {"$or" => [{state: :queued}, {state: :running, sub_state: :processing}]}
190
- query = RocketJob::Job.and(working, scheduled)
191
- query = query.where(current_filter) unless current_filter.blank?
192
- update = {"$set" => {"worker_name" => name, "state" => "running"}}
193
- query.sort(priority: 1, _id: 1).find_one_and_update(update, bypass_document_validation: true)
194
- end
153
+ def find_and_assign_job
154
+ SemanticLogger.silence(:info) do
155
+ scheduled = RocketJob::Job.where(run_at: nil).or(:run_at.lte => Time.now)
156
+ working = RocketJob::Job.queued.or(state: "running", sub_state: "processing")
157
+ query = RocketJob::Job.and(working, scheduled)
158
+ query = query.and(current_filter) unless current_filter.blank?
159
+ update = {"$set" => {"worker_name" => name, "state" => "running"}}
160
+ query.sort(priority: 1, _id: 1).find_one_and_update(update, bypass_document_validation: true)
195
161
  end
196
162
  end
197
163
 
@@ -69,12 +69,10 @@ module RocketJob
69
69
  # Return [false] on timeout
70
70
  def join(timeout = 5)
71
71
  while (worker = workers.first)
72
- if worker.join(timeout)
73
- # Worker thread is dead
74
- workers.shift
75
- else
76
- return false
77
- end
72
+ return false unless worker.join(timeout)
73
+
74
+ # Worker thread is dead
75
+ workers.shift
78
76
  end
79
77
  true
80
78
  end
@@ -91,7 +89,7 @@ module RocketJob
91
89
  private
92
90
 
93
91
  def add_one
94
- workers << Worker.new(id: next_worker_id, server_name: server_name)
92
+ workers << ThreadWorker.new(id: next_worker_id, server_name: server_name)
95
93
  rescue StandardError => e
96
94
  logger.fatal("Cannot start worker", e)
97
95
  end
data/lib/rocketjob.rb CHANGED
@@ -3,6 +3,8 @@ require "semantic_logger"
3
3
  require "symmetric-encryption"
4
4
  require "mongoid"
5
5
  require "rocket_job/extensions/mongo/logging"
6
+ require "rocket_job/extensions/iostreams/path"
7
+ require "rocket_job/extensions/psych/yaml_tree"
6
8
  require "rocket_job/version"
7
9
  require "rocket_job/rocket_job"
8
10
  require "rocket_job/config"
@@ -13,28 +15,37 @@ require "rocket_job/extensions/mongoid/clients/options"
13
15
  require "rocket_job/extensions/mongoid/contextual/mongo"
14
16
  require "rocket_job/extensions/mongoid/factory"
15
17
 
16
- # Apply patches for deprecated Symbol type
17
- require "rocket_job/extensions/mongoid/remove_warnings"
18
+ # Backport New StringifiedSymbol type in Mongoid v7.2
19
+ require "rocket_job/extensions/mongoid/stringified_symbol" unless defined?(Mongoid::StringifiedSymbol)
18
20
 
19
21
  # @formatter:off
20
22
  module RocketJob
21
- autoload :ActiveWorker, "rocket_job/active_worker"
22
- autoload :Batch, "rocket_job/batch"
23
- autoload :CLI, "rocket_job/cli"
24
- autoload :DirmonEntry, "rocket_job/dirmon_entry"
25
- autoload :Event, "rocket_job/event"
26
- autoload :Heartbeat, "rocket_job/heartbeat"
27
- autoload :Job, "rocket_job/job"
28
- autoload :JobException, "rocket_job/job_exception"
29
- autoload :Worker, "rocket_job/worker"
30
- autoload :Performance, "rocket_job/performance"
31
- autoload :Server, "rocket_job/server"
32
- autoload :Sliced, "rocket_job/sliced"
33
- autoload :Subscriber, "rocket_job/subscriber"
34
- autoload :Supervisor, "rocket_job/supervisor"
35
- autoload :ThrottleDefinition, "rocket_job/throttle_definition"
36
- autoload :ThrottleDefinitions, "rocket_job/throttle_definitions"
37
- autoload :WorkerPool, "rocket_job/worker_pool"
23
+ autoload :ActiveWorker, "rocket_job/active_worker"
24
+ autoload :Batch, "rocket_job/batch"
25
+ autoload :CLI, "rocket_job/cli"
26
+ autoload :DirmonEntry, "rocket_job/dirmon_entry"
27
+ autoload :Event, "rocket_job/event"
28
+ autoload :Heartbeat, "rocket_job/heartbeat"
29
+ autoload :Job, "rocket_job/job"
30
+ autoload :JobException, "rocket_job/job_exception"
31
+ autoload :LookupCollection, "rocket_job/lookup_collection"
32
+ autoload :Worker, "rocket_job/worker"
33
+ autoload :Performance, "rocket_job/performance"
34
+ autoload :RactorWorker, "rocket_job/ractor_worker"
35
+ autoload :Server, "rocket_job/server"
36
+ autoload :Sliced, "rocket_job/sliced"
37
+ autoload :Subscriber, "rocket_job/subscriber"
38
+ autoload :Supervisor, "rocket_job/supervisor"
39
+ autoload :ThreadWorker, "rocket_job/thread_worker"
40
+ autoload :ThrottleDefinition, "rocket_job/throttle_definition"
41
+ autoload :ThrottleDefinitions, "rocket_job/throttle_definitions"
42
+ autoload :WorkerPool, "rocket_job/worker_pool"
43
+
44
+ module Category
45
+ autoload :Base, "rocket_job/category/base"
46
+ autoload :Input, "rocket_job/category/input"
47
+ autoload :Output, "rocket_job/category/output"
48
+ end
38
49
 
39
50
  module Plugins
40
51
  module Job
@@ -49,38 +60,37 @@ module RocketJob
49
60
  autoload :Transaction, "rocket_job/plugins/job/transaction"
50
61
  autoload :Worker, "rocket_job/plugins/job/worker"
51
62
  end
52
- autoload :Cron, "rocket_job/plugins/cron"
53
- autoload :Document, "rocket_job/plugins/document"
54
- autoload :ProcessingWindow, "rocket_job/plugins/processing_window"
55
- autoload :Restart, "rocket_job/plugins/restart"
56
- autoload :Retry, "rocket_job/plugins/retry"
57
- autoload :Singleton, "rocket_job/plugins/singleton"
58
- autoload :StateMachine, "rocket_job/plugins/state_machine"
59
- autoload :Transaction, "rocket_job/plugins/transaction"
63
+ autoload :Cron, "rocket_job/plugins/cron"
64
+ autoload :Document, "rocket_job/plugins/document"
65
+ autoload :ProcessingWindow, "rocket_job/plugins/processing_window"
66
+ autoload :Restart, "rocket_job/plugins/restart"
67
+ autoload :Retry, "rocket_job/plugins/retry"
68
+ autoload :Singleton, "rocket_job/plugins/singleton"
69
+ autoload :StateMachine, "rocket_job/plugins/state_machine"
70
+ autoload :Transaction, "rocket_job/plugins/transaction"
71
+ autoload :ThrottleDependentJobs, "rocket_job/plugins/throttle_dependent_jobs"
60
72
  end
61
73
 
62
74
  module Jobs
63
- autoload :ActiveJob, "rocket_job/jobs/active_job"
64
- autoload :CopyFileJob, "rocket_job/jobs/copy_file_job"
65
- autoload :DirmonJob, "rocket_job/jobs/dirmon_job"
66
- autoload :OnDemandBatchJob, "rocket_job/jobs/on_demand_batch_job"
67
- autoload :OnDemandBatchTabularJob, "rocket_job/jobs/on_demand_batch_tabular_job"
68
- autoload :OnDemandJob, "rocket_job/jobs/on_demand_job"
69
- autoload :HousekeepingJob, "rocket_job/jobs/housekeeping_job"
70
- autoload :PerformanceJob, "rocket_job/jobs/performance_job"
71
- autoload :SimpleJob, "rocket_job/jobs/simple_job"
72
- autoload :UploadFileJob, "rocket_job/jobs/upload_file_job"
75
+ autoload :ActiveJob, "rocket_job/jobs/active_job"
76
+ autoload :CopyFileJob, "rocket_job/jobs/copy_file_job"
77
+ autoload :DirmonJob, "rocket_job/jobs/dirmon_job"
78
+ autoload :OnDemandBatchJob, "rocket_job/jobs/on_demand_batch_job"
79
+ autoload :OnDemandJob, "rocket_job/jobs/on_demand_job"
80
+ autoload :HousekeepingJob, "rocket_job/jobs/housekeeping_job"
81
+ autoload :PerformanceJob, "rocket_job/jobs/performance_job"
82
+ autoload :SimpleJob, "rocket_job/jobs/simple_job"
83
+ autoload :UploadFileJob, "rocket_job/jobs/upload_file_job"
84
+
73
85
  module ReEncrypt
74
- if defined?(ActiveRecord) && defined?(SyncAttr)
75
- autoload :RelationalJob, "rocket_job/jobs/re_encrypt/relational_job"
76
- end
86
+ autoload :RelationalJob, "rocket_job/jobs/re_encrypt/relational_job"
77
87
  end
78
88
  end
79
89
 
80
90
  module Subscribers
81
- autoload :Logger, "rocket_job/subscribers/logger"
82
- autoload :Server, "rocket_job/subscribers/server"
83
- autoload :Worker, "rocket_job/subscribers/worker"
91
+ autoload :Logger, "rocket_job/subscribers/logger"
92
+ autoload :Server, "rocket_job/subscribers/server"
93
+ autoload :Worker, "rocket_job/subscribers/worker"
84
94
  end
85
95
  end
86
96