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 +4 -4
- data/.editorconfig +0 -0
- data/.github/workflows/ci.yml +0 -0
- data/Gemfile +0 -0
- data/Gemfile.lock +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/lib/periodically.rb +2 -0
- data/lib/periodically/cli.rb +0 -0
- data/lib/periodically/debug.rb +0 -0
- data/lib/periodically/defer.rb +0 -0
- data/lib/periodically/error_counts.rb +0 -0
- data/lib/periodically/error_handler.rb +27 -0
- data/lib/periodically/error_messages.rb +0 -0
- data/lib/periodically/job.rb +1 -1
- data/lib/periodically/locks.rb +8 -0
- data/lib/periodically/model.rb +0 -0
- data/lib/periodically/redis.rb +0 -0
- data/lib/periodically/version.rb +5 -0
- data/periodically.gemspec +3 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5fce2d831b876d5097d875dfdc4498d1575587e9fbf48e753073019fb7240db
|
4
|
+
data.tar.gz: 46fe8e1544b0cc0adbbb6640bc7b15f0ddc9d42acd319bddbe2bd00cd82ee03a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18fbfd3f548360f9e31bb0b2b7f87a5978a2e8a9181dd10d111fbf0fbbb91b91c72826990a254e10a59246111324c62bcb66adc284f59ca1f3946ed9e71332bc
|
7
|
+
data.tar.gz: 91de6f8e7822cbc84c6066077320a26112125e7b20af9b32b10196843f49f3bf39f53849fb4c5c6127a76e54d56d1432d1ae4f0b9c674724d6d57b62a86aa830
|
data/.editorconfig
CHANGED
File without changes
|
data/.github/workflows/ci.yml
CHANGED
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 = []
|
data/lib/periodically/cli.rb
CHANGED
File without changes
|
data/lib/periodically/debug.rb
CHANGED
File without changes
|
data/lib/periodically/defer.rb
CHANGED
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
|
data/lib/periodically/job.rb
CHANGED
@@ -26,7 +26,7 @@ module Periodically
|
|
26
26
|
begin
|
27
27
|
instance.send(@method)
|
28
28
|
rescue => e
|
29
|
-
Periodically.
|
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)
|
data/lib/periodically/locks.rb
CHANGED
data/lib/periodically/model.rb
CHANGED
File without changes
|
data/lib/periodically/redis.rb
CHANGED
File without changes
|
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 =
|
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
|
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-
|
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
|
-
|
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
|