unique_job 0.1.0 → 0.2.0

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