bizside 2.1.7 → 2.1.9

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
  SHA256:
3
- metadata.gz: d95c69c9025e6c92af0d56c405f0165b18184f187998de833248d432c0fa3d96
4
- data.tar.gz: 83f48a167529c4bc827a65759b5324306797ab434804cc649b6bab0e5df26553
3
+ metadata.gz: ff64fefe7426e051c6a8dfbbf37a45e40780afd5ded6fb08771783a4cbeb04ec
4
+ data.tar.gz: 36f857fe7739917d3ef2a4215094e645b08e443a93a2143ecaf2c24a8b9ef4b5
5
5
  SHA512:
6
- metadata.gz: a0cf8159ccecff293046b5d509ff97d45344b60dddb1101969f261e365e11bc57e15864f90243e4fcba9fec81a3f4016b6377af3ee13a267d02037d28fe4a018
7
- data.tar.gz: 0e9af4ca8a66e62e06514c85aeb8ea42a48c508282d3386fb0b4cbda257acdba1c3d5e52ca622c08ceb2f97924d7150dc16e953c2632bdc9d5bb6045cbd7868a
6
+ metadata.gz: d609790daa2c1b7ac515563ecd0716dea901c9dc29e5a75e67db3512857d7f2948ab8410cb948761b821a90a3ebaf1d95f591de2f614bef862105f2432256af1
7
+ data.tar.gz: fe79fc79a6c6c8b209f41275d9a012973da88fd2329d3d82894b24e337a8668e968251711d537022985035d1e083d36a7b0fc299eb6a6d1fce9c1006a3564403
@@ -168,10 +168,10 @@ module Bizside
168
168
  exception.class.name
169
169
  end
170
170
 
171
- def detect_exception_message(exception)
171
+ def detect_exception_message(exception, truncate_length: @@truncate_length)
172
172
  return '' unless exception
173
173
 
174
- exception.to_s
174
+ exception.to_s[0...truncate_length]
175
175
  end
176
176
 
177
177
  def detect_exception_backtrace(exception, truncate_length: @@truncate_length)
@@ -9,12 +9,7 @@ module Bizside
9
9
 
10
10
  def self.add_job_to(queue, klass, *args)
11
11
  if Bizside.rails_env&.test?
12
- if klass.respond_to?(:before_enqueue)
13
- return unless klass.before_enqueue(*args)
14
- end
15
-
16
- Bizside.logger.info "テスト時にはジョブの登録を行わず、即時実行します。"
17
- klass.perform(*args)
12
+ do_perform_and_hooks_instantly(klass, 'テスト時にはジョブの登録を行わず、即時実行します。', *args)
18
13
  return
19
14
  end
20
15
 
@@ -49,12 +44,7 @@ module Bizside
49
44
 
50
45
  def self.enqueue_at_with_queue(queue, time, klass, *args)
51
46
  if Bizside.rails_env&.test?
52
- if klass.respond_to?(:before_enqueue)
53
- return unless klass.before_enqueue(*args)
54
- end
55
-
56
- Bizside.logger.info "テスト時には遅延ジョブの登録を行わず、即時実行します。"
57
- klass.perform(*args)
47
+ do_perform_and_hooks_instantly(klass, 'テスト時には遅延ジョブの登録を行わず、即時実行します。', *args)
58
48
  return
59
49
  end
60
50
 
@@ -84,12 +74,7 @@ module Bizside
84
74
 
85
75
  def self.set_job_at(time, klass, *args)
86
76
  if Bizside.rails_env&.test?
87
- if klass.respond_to?(:before_enqueue)
88
- return unless klass.before_enqueue(*args)
89
- end
90
-
91
- Bizside.logger.info "テスト時には遅延ジョブの登録を行わず、即時実行します。"
92
- klass.perform(*args)
77
+ do_perform_and_hooks_instantly(klass, 'テスト時には遅延ジョブの登録を行わず、即時実行します。', *args)
93
78
  return
94
79
  end
95
80
 
@@ -214,7 +199,11 @@ module Bizside
214
199
 
215
200
  def self.dequeue(klass, *args)
216
201
  if Bizside.rails_env&.test?
202
+ if klass.respond_to?(:before_dequeue)
203
+ return if klass.before_dequeue(*args) == false
204
+ end
217
205
  Bizside.logger.info 'テスト時にジョブの削除は行いません。'
206
+ klass.after_dequeue(*args) if klass.respond_to?(:after_dequeue)
218
207
  return
219
208
  end
220
209
 
@@ -316,5 +305,65 @@ module Bizside
316
305
  ::Resque::Failure.count(queue, class_name)
317
306
  end
318
307
 
308
+ def self.do_perform_and_hooks_instantly(klass, log_message, *args)
309
+ begin
310
+ if klass.respond_to?(:before_enqueue)
311
+ return if klass.before_enqueue(*args) == false
312
+ end
313
+ rescue
314
+ # should not propagate to on_failure(job code)
315
+ raise
316
+ end
317
+ error_after_queue = nil
318
+ args_to_enqueue = Marshal.load(Marshal.dump(args)) # deep copy
319
+ begin
320
+ klass.after_enqueue(*args) if klass.respond_to?(:after_enqueue)
321
+ rescue => e
322
+ # should propagate only to code that enqueued the job
323
+ error_after_queue = e
324
+ end
325
+
326
+ args = stringify_keys(args_to_enqueue)
327
+
328
+ begin
329
+ begin
330
+ klass.before_perform(*args) if klass.respond_to?(:before_perform)
331
+ rescue ::Resque::Job::DontPerform
332
+ return
333
+ end
334
+
335
+ perform = -> do
336
+ Bizside.logger.info log_message
337
+ klass.perform(*args)
338
+ end
339
+ if klass.respond_to?(:around_perform)
340
+ klass.around_perform(*args, &perform)
341
+ else
342
+ perform.call
343
+ end
344
+
345
+ klass.after_perform(*args) if klass.respond_to?(:after_perform)
346
+ rescue => e
347
+ klass.on_failure(e, *args) if klass.respond_to?(:on_failure)
348
+ raise
349
+ ensure
350
+ raise error_after_queue if error_after_queue
351
+ end
352
+ end
353
+ private_class_method :do_perform_and_hooks_instantly
354
+
355
+ def self.stringify_keys(object)
356
+ case object
357
+ when Hash
358
+ object.map {|k, v| [stringify_keys(k), stringify_keys(v)]}.to_h
359
+ when Array
360
+ object.map {|v| stringify_keys(v)}
361
+ when Symbol
362
+ object.to_s
363
+ else
364
+ object
365
+ end
366
+ end
367
+ private_class_method :stringify_keys
319
368
  end
320
369
  end
@@ -1,3 +1,3 @@
1
1
  module Bizside
2
- VERSION = '2.1.7'
2
+ VERSION = '2.1.9'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bizside
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.7
4
+ version: 2.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - bizside-developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-03 00:00:00.000000000 Z
11
+ date: 2022-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport