que-scheduler 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50f99770c888127c3d20b6d5a9072fd529c3a6be
4
- data.tar.gz: 3fedea8f36b9a322b4cc1b09b05eb1fab35789e8
3
+ metadata.gz: 308f6550dbe058549d79ccf73b5a7ff5752d43a0
4
+ data.tar.gz: 8f003e7a8b2a39c6c205f7f137365a80b7c70992
5
5
  SHA512:
6
- metadata.gz: 5c406a1a4d22830795836f2bde623ed6b438f0c9e09fdc5bfaf15d5df3bd1385e924e208058241df8a06dc614ea10746d85e13e8d1d9c80022e972fade58c4be
7
- data.tar.gz: '08cae05d301b647f98b85ffbf1512709b0c134d5432c73c02a3620e5f3914ecc56ce32ae8fb7b71c2cf6d6bca3d6a6873f8ed310aee7bbd0b8dcbfac6a441583'
6
+ metadata.gz: 8d9dc59a505942c3427508dc6322acc174711fed650b6c771b783331ff00eb9077675284c698d54c8eaa6659e5882ff32efa180ceb2dc1aecbee0e7457363515
7
+ data.tar.gz: 7c0dd0d36ec8d585448b1dbfa7f4df3b50916baab0d8991a263cad81abef57ce242686f5f53589a18da9ed83e46705c03f40e800648f2566bc0c22f89506f750
@@ -1,3 +1,6 @@
1
1
  require 'que/scheduler/version'
2
2
  require 'que/scheduler/scheduler_job'
3
- require 'que/scheduler/engine' if Gem::Specification.find_by_name('railties')
3
+ require 'que/scheduler/adapters/orm'
4
+ # rubocop:disable Style/PreferredHashMethods
5
+ require 'que/scheduler/engine' if Gem.loaded_specs.has_key?('railties')
6
+ # rubocop:enable Style/PreferredHashMethods
@@ -0,0 +1,69 @@
1
+ module Que
2
+ module Scheduler
3
+ module Adapters
4
+ module Orm
5
+ class AdapterBase
6
+ SCHEDULER_COUNT_SQL =
7
+ 'SELECT COUNT(*) FROM que_jobs WHERE job_class = ' \
8
+ "'#{Que::Scheduler::SchedulerJob.name}'".freeze
9
+
10
+ def transaction
11
+ transaction_base.transaction do
12
+ yield
13
+ end
14
+ end
15
+
16
+ def count_schedulers
17
+ dml(SCHEDULER_COUNT_SQL).first.values.first.to_i
18
+ end
19
+ end
20
+
21
+ class ActiveRecordAdapter < AdapterBase
22
+ def transaction_base
23
+ ::ActiveRecord::Base
24
+ end
25
+
26
+ def dml(sql)
27
+ ::ActiveRecord::Base.connection.execute(sql)
28
+ end
29
+
30
+ def ddl(sql)
31
+ dml(sql)
32
+ end
33
+ end
34
+
35
+ class SequelAdapter < AdapterBase
36
+ def transaction_base
37
+ ::DB
38
+ end
39
+
40
+ def dml(sql)
41
+ ::DB.fetch(sql)
42
+ end
43
+
44
+ def ddl(sql)
45
+ ::DB.run(sql)
46
+ end
47
+ end
48
+
49
+ class << self
50
+ # The exposed mutator method here allows any future orm adapters to be tested.
51
+ attr_writer :instance
52
+
53
+ def instance
54
+ # rubocop:disable Style/PreferredHashMethods
55
+ @instance ||=
56
+ if Gem.loaded_specs.has_key?('activerecord')
57
+ ActiveRecordAdapter.new
58
+ elsif Gem.loaded_specs.has_key?('sequel')
59
+ SequelAdapter.new
60
+ else
61
+ raise 'No known ORM adapter is available for que-scheduler'
62
+ end
63
+ # rubocop:enable Style/PreferredHashMethods
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -57,7 +57,7 @@ module Que
57
57
 
58
58
  class << self
59
59
  def defined_jobs
60
- @defined_jobs ||= YAML.load_file(QUE_SCHEDULER_CONFIG_LOCATION).map do |k, v|
60
+ @defined_jobs ||= YAML.safe_load(IO.read(QUE_SCHEDULER_CONFIG_LOCATION)).map do |k, v|
61
61
  Que::Scheduler::DefinedJob.new(
62
62
  {
63
63
  name: k,
@@ -7,14 +7,13 @@ require_relative 'scheduler_job_args'
7
7
  module Que
8
8
  module Scheduler
9
9
  class SchedulerJob < Que::Job
10
- SCHEDULER_COUNT_SQL = "SELECT COUNT(*) FROM que_jobs WHERE job_class = '#{name}'".freeze
11
10
  SCHEDULER_FREQUENCY = 60
12
11
 
13
12
  # Always highest possible priority.
14
13
  @priority = 0
15
14
 
16
15
  def run(options = nil)
17
- ::ActiveRecord::Base.transaction do
16
+ ::Que::Scheduler::Adapters::Orm.instance.transaction do
18
17
  assert_one_scheduler_job
19
18
  scheduler_job_args = SchedulerJobArgs.build(options)
20
19
  logs = ["que-scheduler last ran at #{scheduler_job_args.last_run_time}."]
@@ -37,7 +36,7 @@ module Que
37
36
  private
38
37
 
39
38
  def assert_one_scheduler_job
40
- schedulers = ActiveRecord::Base.connection.execute(SCHEDULER_COUNT_SQL).first['count'].to_i
39
+ schedulers = ::Que::Scheduler::Adapters::Orm.instance.count_schedulers
41
40
  return if schedulers == 1
42
41
  raise "Only one #{self.class.name} should be enqueued. #{schedulers} were found."
43
42
  end
@@ -1,4 +1,6 @@
1
1
  require 'hashie'
2
+ require 'active_support'
3
+ require 'active_support/time_with_zone'
2
4
 
3
5
  # These are the args that are used for this particular run of the scheduler.
4
6
  module Que
@@ -17,6 +19,7 @@ module Que
17
19
  job_dictionary: []
18
20
  }
19
21
  else
22
+ options = options.symbolize_keys
20
23
  {
21
24
  last_run_time: Time.zone.parse(options.fetch(:last_run_time)),
22
25
  job_dictionary: options.fetch(:job_dictionary)
@@ -1,5 +1,5 @@
1
1
  module Que
2
2
  module Scheduler
3
- VERSION = '1.0.1'.freeze
3
+ VERSION = '1.0.2'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: que-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Lascelles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-06 00:00:00.000000000 Z
11
+ date: 2018-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activerecord
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '4.0'
26
+ version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: backports
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,217 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.10'
83
- description: A lightweight cron scheduler for the async job worker Que
83
+ - !ruby/object:Gem::Dependency
84
+ name: activerecord
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bundler
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: combustion
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: coveralls
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry-byebug
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: que-testing
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: railties
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '3.0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '3.0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rake
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: reek
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: rspec
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: rubocop
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: sequel
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '4.0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '4.0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: sqlite3
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '1.3'
258
+ type: :development
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '1.3'
265
+ - !ruby/object:Gem::Dependency
266
+ name: timecop
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :development
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ - !ruby/object:Gem::Dependency
280
+ name: zonebie
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ description: A lightweight cron scheduler for the Que async job worker
84
294
  email:
85
295
  - harry@harrylascelles.com
86
296
  executables: []
@@ -89,6 +299,7 @@ extra_rdoc_files: []
89
299
  files:
90
300
  - README.md
91
301
  - lib/que/scheduler.rb
302
+ - lib/que/scheduler/adapters/orm.rb
92
303
  - lib/que/scheduler/defined_job.rb
93
304
  - lib/que/scheduler/engine.rb
94
305
  - lib/que/scheduler/enqueueing_calculator.rb