sigurd 0.0.1 → 0.0.2

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: 87854913818982a8f760090652f1a5f23984d7e9b4c6636a9bd9504bc23a92eb
4
- data.tar.gz: 186bbe65f6b7b8a4bc6fd8c6241673322db2379f5e84e5b3809b0550951b901b
3
+ metadata.gz: 75efcb785b0d995dae7843c66db4ad72955b2a7d3574af71c41aea634f5f8358
4
+ data.tar.gz: 4fb1c060a723a5d827fc76bdf23da681904d05ad458dca3653106557d8de4b17
5
5
  SHA512:
6
- metadata.gz: 89db617898198aeefb795e3e5ea93d287b7d23bd39841af5a8ca264c9aff2aae4b717f609039ab0a41414de5c8d1fc4a1eb231797aa25f6f5c1ee46ba091f05f
7
- data.tar.gz: 60eeb987aabb420dd01129ae6d8bd0811239283f964854763847094f7b7953b0250f47f97020c02859382b8d5d0d4369516644cb6a8a0b4f3768e2fd18593a97
6
+ metadata.gz: 4c933ceb70894580031de2cd35af38910c9fc896497c0f60e4e4a72d707663c68c80dc6f4c9739bc1cc342080ad6479f3e5855d541c3d3f37516ada1d19b9218
7
+ data.tar.gz: a5d0795a16a10342e75ee45e8ddf09e5fdbab3ec86d7b1c5e2500dda96e8889f70d5ec1e980c81f8d98df5a230dd906b5de25d8f84b57e3ebffdc9b6e99bb2e1
@@ -7,5 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## UNRELEASED
9
9
 
10
+ ## [0.0.2] - 2020-11-25
11
+ - Allow to access the executor from outside the signal handler.
12
+
10
13
  ## [0.0.1] - 2020-06-02
11
14
  - Initial release.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sigurd (0.0.1)
4
+ sigurd (0.0.2)
5
5
  concurrent-ruby (~> 1)
6
6
  exponential-backoff
7
7
 
data/README.md CHANGED
@@ -1,2 +1,99 @@
1
1
  # sigurd
2
- Small gem to manage executing looping processes and signal handling
2
+ Small gem to manage executing looping processes and signal handling.
3
+
4
+ <p align="center">
5
+ <a href="https://badge.fury.io/rb/sigurd"><img src="https://badge.fury.io/rb/sigurd.svg" alt="Gem Version" height="18"></a>
6
+ <a href="https://codeclimate.com/github/flipp-oss/sigurd/maintainability"><img src="https://api.codeclimate.com/v1/badges/a5fc45a193abadc4e45b/maintainability" /></a>
7
+ </p>
8
+
9
+ # Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+ ```ruby
13
+ gem 'sigurd'
14
+ ```
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install sigurd
23
+
24
+ # Versioning
25
+
26
+ We use a version of semver for this gem. Any change in previous behavior
27
+ (something works differently or something old no longer works)
28
+ is denoted with a bump in the minor version (0.4 -> 0.5). Patch versions
29
+ are for bugfixes or new functionality which does not affect existing code. You
30
+ should be locking your Gemfile to the minor version:
31
+
32
+ ```ruby
33
+ gem 'sigurd', '0.0.1'
34
+ ```
35
+
36
+ # Usage
37
+
38
+ Sigurd exposes two classes for use with a third class. The ideas is as follows:
39
+
40
+ * You have any object which responds to the `start` and `stop` methods.
41
+ This object is called a "Runner". When the `stop` method is called,
42
+ the runner should gracefully shut down.
43
+ * You create an `Executor` class - this manages a thread pool for a
44
+ list of runners.
45
+ * You create a `SignalHandler` which is the topmost object. This will
46
+ handle the signals sent by the system and gracefully forward the
47
+ requests. You pass the executor into the SignalHandler.
48
+ * Finally, you call `start` on the `SignalHandler` to begin the execution.
49
+
50
+ Sample code:
51
+
52
+ ```ruby
53
+ class TestRunner
54
+
55
+ def start
56
+ loop do
57
+ break if @signal_to_stop
58
+ # do some logic here
59
+ end
60
+ end
61
+
62
+ def stop
63
+ @signal_to_stop = true
64
+ end
65
+ end
66
+
67
+ runners = (1..2).map { TestRunner.new }
68
+ executor = Sigurd::Executor.new(runners, sleep_seconds: 5, logger: Logger.new(STDOUT))
69
+ Sigurd::SignalHandler.new(executor).run!
70
+ ```
71
+
72
+ If you have only a single runner, you can pass it into the `SignalHandler`
73
+ directly, without using an `Executor`:
74
+
75
+ ```ruby
76
+ Sigurd::SignalHandler.new(runner).run!
77
+ ```
78
+
79
+ By default, if any of your runners fails, Sigurd will use an exponential
80
+ backoff to wait before restarting it. You can instead use the `sleep_seconds`
81
+ setting to always sleep a fixed amount of time before retrying. There
82
+ is no limit to retries.
83
+
84
+ ## Contributing
85
+
86
+ Bug reports and pull requests are welcome on GitHub at https://github.com/flipp-oss/sigurd .
87
+
88
+ ### Linting
89
+
90
+ Sigurd uses Rubocop to lint the code. Please run Rubocop on your code
91
+ before submitting a PR.
92
+
93
+ ---
94
+ <p align="center">
95
+ Sponsored by<br/>
96
+ <a href="https://corp.flipp.com/">
97
+ <img src="support/flipp-logo.png" title="Flipp logo" style="border:none;"/>
98
+ </a>
99
+ </p>
@@ -35,7 +35,7 @@ module Sigurd
35
35
 
36
36
  private
37
37
 
38
- attr_reader :reader, :writer, :signal_queue, :executor
38
+ attr_reader :reader, :writer, :signal_queue, :runner
39
39
 
40
40
  # https://stackoverflow.com/questions/29568298/run-code-when-signal-is-sent-but-do-not-trap-the-signal-in-ruby
41
41
  def prepend_handler(signal)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sigurd
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sigurd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Orner
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-02 00:00:00.000000000 Z
11
+ date: 2020-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '1.27'
139
- description:
139
+ description:
140
140
  email:
141
141
  - daniel.orner@flipp.com
142
142
  executables: []
@@ -165,11 +165,12 @@ files:
165
165
  - spec/executor_spec.rb
166
166
  - spec/signal_handler_spec.rb
167
167
  - spec/spec_helper.rb
168
+ - support/flipp-logo.png
168
169
  homepage: ''
169
170
  licenses:
170
171
  - Apache-2.0
171
172
  metadata: {}
172
- post_install_message:
173
+ post_install_message:
173
174
  rdoc_options: []
174
175
  require_paths:
175
176
  - lib
@@ -185,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
186
  version: '0'
186
187
  requirements: []
187
188
  rubygems_version: 3.1.2
188
- signing_key:
189
+ signing_key:
189
190
  specification_version: 4
190
191
  summary: Small gem to manage executing looping processes and signal handling.
191
192
  test_files: