bizside 2.1.7 → 2.1.9

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
  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