unique_job 0.1.0 → 0.2.0

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: af33cb02d39f50c4d16316374ee2079b863505321370817e1df1a293d5b6674f
4
- data.tar.gz: '02906948d9857c66215b6984ff2966e766bde452eb375f08c71f01739b3dbf25'
3
+ metadata.gz: c480f4b0fe78931cf109fbca3db98032cd5bc2e1ad065dc218c56e1ac00361b5
4
+ data.tar.gz: e67b02dd3bde8bfb46d417e46bac20780f7c05eb67dcd44f93d9fda831ecde15
5
5
  SHA512:
6
- metadata.gz: 6e53fde574f9343471ccdbbf72a9a3562e4a8c95950968ea55f1cbb5f774989b8ab5f781dd129f299817d4e45dbfaa9fe4ae42b3aa9b5b86dd4475c4d6d6ab50
7
- data.tar.gz: cd1f0aff1da071006a5c9c003882650bfb2d534b0c1bc455469fddfdc3de60b889e404ddb072426f155ea944315bcd88c9e0ecb24009b0e011fdd4c878b30347
6
+ metadata.gz: 44785d034535d444ee219a7b0ad0dd064b02b85aee5289f13ba74a1c2d4fded15898ed2b974c4be4fbc5d6644bf4ba4e704a461c2f3f96b8341e93ea9aeb6dbc
7
+ data.tar.gz: bd9b4b1ef9d56ae58f724d1dc827f3747895154b0f7fd978dfd1739e02fdb547fb1d3ee1d2ea5d667e92b572ad1bc1448e579fcd181b7da53acd1c811ab16f55
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- unique_job (0.1.0)
4
+ unique_job (0.2.0)
5
5
  redis
6
6
  sidekiq (> 6.0, < 7.0)
7
7
 
@@ -1,7 +1,9 @@
1
+ require 'unique_job/logging'
2
+
1
3
  module UniqueJob
2
4
  class JobHistory
3
5
  def initialize(worker_class, queueing_class, ttl)
4
- @key = "#{self.class}:#{queueing_class}:#{worker_class}"
6
+ @key = "#{self.class}:#{queueing_class.name.split('::')[-1]}:#{worker_class}"
5
7
  @ttl = ttl
6
8
  end
7
9
 
@@ -20,7 +22,7 @@ module UniqueJob
20
22
  end
21
23
 
22
24
  def exists?(val)
23
- redis.exists(key(val))
25
+ redis.exists?(key(val))
24
26
  end
25
27
 
26
28
  def add(val)
@@ -44,18 +46,20 @@ module UniqueJob
44
46
  end
45
47
 
46
48
  module RescueAllRedisErrors
49
+ include Logging
50
+
47
51
  %i(
48
52
  ttl
49
53
  exists?
50
54
  add
51
55
  ).each do |method_name|
52
56
  define_method(method_name) do |*args, &blk|
53
- start = Time.zone.now
57
+ start = Time.now
54
58
  super(*args, &blk)
55
59
  rescue => e
56
- elapsed = Time.zone.now - start
57
- Rails.logger.warn "Rescue all errors in #{self.class}##{method_name} #{e.inspect} elapsed=#{sprintf("%.3f sec", elapsed)}"
58
- Rails.logger.debug { e.backtrace.join("\n") }
60
+ elapsed = Time.now - start
61
+ logger.warn "Rescue all errors in #{self.class}##{method_name} #{e.inspect} elapsed=#{sprintf("%.3f sec", elapsed)}"
62
+ logger.debug { e.backtrace.join("\n") }
59
63
  nil
60
64
  end
61
65
  end
@@ -0,0 +1,17 @@
1
+ require 'logger'
2
+
3
+ module UniqueJob
4
+ module Logging
5
+ def logger
6
+ if File.basename($0) == 'rake'
7
+ Logger.new(STDOUT, level: Logger::WARN)
8
+ elsif defined?(Sidekiq)
9
+ Sidekiq.logger
10
+ elsif defined?(Rails)
11
+ Rails.logger
12
+ else
13
+ Logger.new(STDOUT, level: Logger::WARN)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,11 +1,16 @@
1
+ require 'unique_job/logging'
2
+ require 'unique_job/job_history'
3
+
1
4
  module UniqueJob
2
5
  module Util
6
+ include Logging
7
+
3
8
  def perform_if_unique(worker, args, &block)
4
9
  if worker.respond_to?(:unique_key)
5
10
  unique_key = worker.unique_key(*args)
6
11
 
7
12
  if unique_key.nil? || unique_key.to_s.empty?
8
- logger.warn { "#{class_name}##{__method__} Key is blank worker=#{worker.class} args=#{truncate(args.inspect)}" }
13
+ logger.warn { "#{self.class}##{__method__} Key is blank worker=#{worker.class} args=#{truncate(args.inspect)}" }
9
14
  yield
10
15
  elsif perform_unique_check(worker, args, unique_key.to_s)
11
16
  yield
@@ -19,7 +24,7 @@ module UniqueJob
19
24
  history = job_history(worker)
20
25
 
21
26
  if history.exists?(unique_key)
22
- logger.info { "#{class_name}##{__method__} Skip duplicate job for #{history.ttl} seconds, remaining #{history.ttl(unique_key)} seconds worker=#{worker.class} args=#{truncate(args.inspect)}" }
27
+ logger.info { "#{self.class}##{__method__} Skip duplicate job for #{history.ttl} seconds, remaining #{history.ttl(unique_key)} seconds worker=#{worker.class} args=#{truncate(args.inspect)}" }
23
28
 
24
29
  perform_callback(worker, :after_skip, args)
25
30
 
@@ -32,7 +37,7 @@ module UniqueJob
32
37
 
33
38
  def job_history(worker)
34
39
  ttl = worker.respond_to?(:unique_in) ? worker.unique_in : 3600
35
- JobHistory.new(worker.class, class_name, ttl)
40
+ JobHistory.new(worker.class, self.class, ttl)
36
41
  end
37
42
 
38
43
  def truncate(text, length: 100)
@@ -59,21 +64,5 @@ module UniqueJob
59
64
  end
60
65
  end
61
66
  end
62
-
63
- def class_name
64
- self.class.name.demodulize
65
- end
66
-
67
- def logger
68
- if File.basename($0) == 'rake'
69
- Logger.new(STDOUT, level: Logger::WARN)
70
- elsif defined?(Sidekiq)
71
- Sidekiq.logger
72
- elsif defined?(Rails)
73
- Rails.logger
74
- else
75
- Logger.new(STDOUT, level: Logger::WARN)
76
- end
77
- end
78
67
  end
79
68
  end
@@ -1,3 +1,3 @@
1
1
  module UniqueJob
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unique_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ts-3156
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-14 00:00:00.000000000 Z
11
+ date: 2020-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -64,6 +64,7 @@ files:
64
64
  - lib/unique_job.rb
65
65
  - lib/unique_job/client_middleware.rb
66
66
  - lib/unique_job/job_history.rb
67
+ - lib/unique_job/logging.rb
67
68
  - lib/unique_job/server_middleware.rb
68
69
  - lib/unique_job/util.rb
69
70
  - lib/unique_job/version.rb