periodically 0.0.9 → 0.1.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: 56c1aebbc2cb04d0d95479c15e1da4efe3974d3bbd6ad8eda591507017f273cc
4
- data.tar.gz: a53d6c4c55e551e9ffa04604bc818892562fccff74a4649a780b20b55b399e11
3
+ metadata.gz: d5fce2d831b876d5097d875dfdc4498d1575587e9fbf48e753073019fb7240db
4
+ data.tar.gz: 46fe8e1544b0cc0adbbb6640bc7b15f0ddc9d42acd319bddbe2bd00cd82ee03a
5
5
  SHA512:
6
- metadata.gz: bf64dacf55b0fc2b61453d7456c02f6fb9ab55c4f199092b3b7f0324156c0b0d38f37f7ca231d700cfa105f7326166db47bf530b388d0828364c7b9d99062568
7
- data.tar.gz: 4cb7c752f8a6101b9dc8c9ab7453dd176c8b5c3a899723f3040fbb7d0380b898ac5ba2c1bec068973abf938be6e4d1f5efc1255f0d6b14faa96eb129727f661d
6
+ metadata.gz: 18fbfd3f548360f9e31bb0b2b7f87a5978a2e8a9181dd10d111fbf0fbbb91b91c72826990a254e10a59246111324c62bcb66adc284f59ca1f3946ed9e71332bc
7
+ data.tar.gz: 91de6f8e7822cbc84c6066077320a26112125e7b20af9b32b10196843f49f3bf39f53849fb4c5c6127a76e54d56d1432d1ae4f0b9c674724d6d57b62a86aa830
data/.editorconfig CHANGED
File without changes
File without changes
data/Gemfile CHANGED
File without changes
data/Gemfile.lock CHANGED
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
data/lib/periodically.rb CHANGED
@@ -5,11 +5,13 @@ require "logger"
5
5
  require "periodically/debug"
6
6
  require "periodically/defer"
7
7
  require "periodically/error_counts"
8
+ require "periodically/error_handler"
8
9
  require "periodically/error_messages"
9
10
  require "periodically/job"
10
11
  require "periodically/locks"
11
12
  require "periodically/model"
12
13
  require "periodically/redis"
14
+ require "periodically/version"
13
15
 
14
16
  module Periodically
15
17
  @@registered = []
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Periodically
4
+ module ErrorHandler
5
+ def self.error_handlers
6
+ @handlers ||= []
7
+ end
8
+
9
+ def self.handle_error(err, instance)
10
+ error_handlers.each do |handler|
11
+ handler.call(err, instance)
12
+ rescue => err
13
+ Periodically.logger.error "!!! ERROR HANDLER THREW AN ERROR !!!"
14
+ Periodically.logger.error err
15
+ Periodically.logger.error err.backtrace.join("\n") unless err.backtrace.nil?
16
+ end
17
+ end
18
+
19
+ class LoggingHandler
20
+ def call(err, instance)
21
+ Periodically.logger.warn("Job instance[#{instance}] execution raised an exception\n#{err.message}")
22
+ end
23
+
24
+ Periodically::ErrorHandler.error_handlers << Periodically::ErrorHandler::LoggingHandler.new
25
+ end
26
+ end
27
+ end
File without changes
@@ -26,7 +26,7 @@ module Periodically
26
26
  begin
27
27
  instance.send(@method)
28
28
  rescue => e
29
- Periodically.logger.error("Job instance[#{instance}] execution raised an exception\n#{e.message}")
29
+ Periodically::ErrorHandler.handle_error(e, instance)
30
30
  new_error_count = Periodically::ErrorCounts.increment(instance_key(instance))
31
31
  Periodically::Locks.lock(instance_key(instance), DEFAULT_ERROR_DELAY.call(new_error_count))
32
32
  Periodically::ErrorMessages.store(instance_key(instance), e)
@@ -22,6 +22,14 @@ module Periodically
22
22
  end
23
23
  end
24
24
 
25
+ def self.unlock(key)
26
+ lkey = lock_key(key)
27
+
28
+ Periodically.redis do |conn|
29
+ conn.del(lkey)
30
+ end
31
+ end
32
+
25
33
  def self.remaining(key)
26
34
  lkey = lock_key(key)
27
35
 
File without changes
File without changes
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Periodically
4
+ VERSION = "0.1.0"
5
+ end
data/periodically.gemspec CHANGED
@@ -1,10 +1,12 @@
1
+ require_relative "lib/periodically/version"
2
+
1
3
  Gem::Specification.new do |gem|
2
4
  gem.authors = ["wyozi"]
3
5
  gem.summary = "Periodic background jobs for Ruby"
4
6
 
5
7
  gem.files = `git ls-files | grep -Ev '^(test|myapp|examples)'`.split("\n")
6
8
  gem.name = "periodically"
7
- gem.version = "0.0.9"
9
+ gem.version = Periodically::VERSION
8
10
  gem.required_ruby_version = ">= 2.5.0"
9
11
 
10
12
  gem.add_dependency "redis", ">= 4.1.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: periodically
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - wyozi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-19 00:00:00.000000000 Z
11
+ date: 2020-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -69,11 +69,13 @@ files:
69
69
  - lib/periodically/debug.rb
70
70
  - lib/periodically/defer.rb
71
71
  - lib/periodically/error_counts.rb
72
+ - lib/periodically/error_handler.rb
72
73
  - lib/periodically/error_messages.rb
73
74
  - lib/periodically/job.rb
74
75
  - lib/periodically/locks.rb
75
76
  - lib/periodically/model.rb
76
77
  - lib/periodically/redis.rb
78
+ - lib/periodically/version.rb
77
79
  - periodically.gemspec
78
80
  homepage:
79
81
  licenses: []
@@ -93,8 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
95
  - !ruby/object:Gem::Version
94
96
  version: '0'
95
97
  requirements: []
96
- rubyforge_project:
97
- rubygems_version: 2.7.6
98
+ rubygems_version: 3.1.2
98
99
  signing_key:
99
100
  specification_version: 4
100
101
  summary: Periodic background jobs for Ruby