celluloid-supervision 0.20.0 → 0.20.1
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 +4 -4
- data/CHANGES.md +12 -0
- data/README.md +102 -1
- data/celluloid-supervision.gemspec +1 -1
- data/lib/celluloid/supervision/configuration.rb +1 -1
- data/lib/celluloid/supervision/configuration/instance.rb +1 -1
- data/lib/celluloid/supervision/constants.rb +6 -6
- data/lib/celluloid/supervision/container/behavior.rb +1 -1
- data/lib/celluloid/supervision/container/behavior/tree.rb +1 -0
- data/lib/celluloid/supervision/container/instance.rb +5 -5
- data/lib/celluloid/supervision/validation.rb +4 -4
- data/lib/celluloid/supervision/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f62d1faacdaed9f8d51985b20263c17ba4363d59
|
4
|
+
data.tar.gz: 6b79a9a5ab4eb25bdf49c47723489a8d1259a0f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17b27060543bd2eff8a4498c1ac39bcbeafac54ae75246b83cac8101f9fa6fb073f4d024553c21cdff6735da2820dbe4a0c46c505fe01203d36f8afee149b506
|
7
|
+
data.tar.gz: f8dccac2e2c8db22deb98c39d66108b60fcdea649149c7107439711ec753ba82865f8f07c676b8bbfccaabe63484b013db3e4c42a299c1cb7c0278706eb66d70
|
data/CHANGES.md
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
0.20.1 (2015-08-06)
|
2
|
+
-----
|
3
|
+
* Fixed arity checking
|
4
|
+
* Added usage examples to README
|
5
|
+
* Change reference to `Actor::System` ( was `ActorSystem` )
|
6
|
+
|
7
|
+
0.20.0 (2015-07-04)
|
8
|
+
-----
|
9
|
+
* Extracted from Celluloid
|
10
|
+
* Re-added Supervision Trees
|
11
|
+
* Added Configuration object
|
12
|
+
* Added injections and behaviors
|
data/README.md
CHANGED
@@ -1 +1,102 @@
|
|
1
|
-
|
1
|
+

|
2
|
+
|
3
|
+
[](http://rubygems.org/gems/celluloid-supervision)
|
4
|
+
[](http://travis-ci.org/celluloid/celluloid-supervision)
|
5
|
+
[](https://codeclimate.com/github/celluloid/celluloid-supervision)
|
6
|
+
[](https://coveralls.io/r/celluloid/celluloid-supervision)
|
7
|
+
|
8
|
+
Supervisors; with Supervision Containers (Groups), Configurations, and Trees for [Celluloid](https://github.com/celluloid/celluloid).
|
9
|
+
|
10
|
+
|
11
|
+
To supervise actors, you have many options:
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
# Using supervisors.
|
16
|
+
|
17
|
+
### Directly
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
MyActor.supervise as: :my_actor # Without arguments.
|
21
|
+
MyActor.supervise as: :my_actor, args: [:one_arg, :two_args]
|
22
|
+
```
|
23
|
+
|
24
|
+
### Indirectly
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
Celluloid.supervise as: :my_actor, type: MyActor # Without arguments.
|
28
|
+
Celluloid.supervise as: :my_actor, type: MyActor, args: [:one_arg, :two_args]
|
29
|
+
```
|
30
|
+
|
31
|
+
|
32
|
+
# Using containers.
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
container = Celluloid::Supervision::Container.new {
|
36
|
+
supervise type: MyActor, as: :my_actor
|
37
|
+
supervise type: MyActor, as: :my_actor_with_args, args: [:one_arg, :two_args]
|
38
|
+
}
|
39
|
+
container.run!
|
40
|
+
```
|
41
|
+
|
42
|
+
# Using configuration objects:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
config = Celluloid::Supervision::Configuration.define([
|
46
|
+
{
|
47
|
+
type: MyActor,
|
48
|
+
as: :my_actor
|
49
|
+
},
|
50
|
+
{
|
51
|
+
type: MyActor,
|
52
|
+
as: :my_actor_with_args,
|
53
|
+
args: [
|
54
|
+
:one_arg,
|
55
|
+
:two_args
|
56
|
+
]
|
57
|
+
},
|
58
|
+
])
|
59
|
+
|
60
|
+
# Whenever you would like to deploy the actors:
|
61
|
+
config.deploy
|
62
|
+
|
63
|
+
# Whenver you would like to shut them down:
|
64
|
+
config.shutdown
|
65
|
+
|
66
|
+
# Reuse the same configuration if you like!
|
67
|
+
config.deploy
|
68
|
+
```
|
69
|
+
|
70
|
+
### By on-going configuration object:
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
config = Celluloid::Supervision::Configuration.new
|
74
|
+
config.define type: MyActor, as: :my_actor
|
75
|
+
config.define type: MyActor, as: :my_actor_with_args, args: [:one_arg, :two_args]
|
76
|
+
config deploy
|
77
|
+
|
78
|
+
# Now add actors to the already running configuration.
|
79
|
+
config.add type: MyActor, as: :my_actor_deployed_immediately
|
80
|
+
config.shutdown
|
81
|
+
```
|
82
|
+
|
83
|
+
|
84
|
+
# Documentation coming:
|
85
|
+
|
86
|
+
* Supervision Trees
|
87
|
+
* Supervised Pools
|
88
|
+
* Supervised Supervisors
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
## Contributing
|
93
|
+
|
94
|
+
* Fork this repository on github.
|
95
|
+
* Make your changes and send us a pull request.
|
96
|
+
* If we like them we'll merge them.
|
97
|
+
* If we've accepted a patch, feel free to ask for commit access.
|
98
|
+
|
99
|
+
## License
|
100
|
+
|
101
|
+
Copyright (c) 2011-2015 Tony Arcieri, Donovan Keme.
|
102
|
+
Distributed under the MIT License. See LICENSE.txt for further details.
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.description = "Supervisors, Supervision Groups, and Supervision Trees for Celluloid."
|
11
11
|
gem.licenses = ["MIT"]
|
12
12
|
|
13
|
-
gem.authors = ["
|
13
|
+
gem.authors = ["Donovan Keme", "Tony Arcieri", "Tim Carey-Smith"]
|
14
14
|
gem.email = ["code@extremist.digital", "tony.arcieri@gmail.com"]
|
15
15
|
gem.homepage = "https://github.com/celluloid/"
|
16
16
|
|
@@ -5,16 +5,16 @@ module Celluloid
|
|
5
5
|
INSTANCE_RETRY_LIMIT = 5
|
6
6
|
|
7
7
|
module Error
|
8
|
-
class NoPublicService <
|
8
|
+
class NoPublicService < Celluloid::Error; end
|
9
9
|
end
|
10
10
|
|
11
11
|
class Configuration
|
12
12
|
module Error
|
13
|
-
class AlreadyDefined <
|
14
|
-
class InvalidSupervisor <
|
15
|
-
class InvalidValues <
|
16
|
-
class Incomplete <
|
17
|
-
class Invalid <
|
13
|
+
class AlreadyDefined < Celluloid::Error; end
|
14
|
+
class InvalidSupervisor < Celluloid::Error; end
|
15
|
+
class InvalidValues < Celluloid::Error; end
|
16
|
+
class Incomplete < Celluloid::Error; end
|
17
|
+
class Invalid < Celluloid::Error; end
|
18
18
|
end
|
19
19
|
|
20
20
|
# Using class variable so that parameters can be added by plugins.
|
@@ -20,6 +20,7 @@ module Celluloid
|
|
20
20
|
@branch = @configuration.fetch(:branch, @configuration[:as])
|
21
21
|
@configuration.delete(Behavior.parameter(:supervise, @configuration))
|
22
22
|
else
|
23
|
+
puts "#{@configuration[:supervise].class.name} ... #{@configuration[:supervise]}"
|
23
24
|
fail ArgumentError.new("No actors given to Tree to supervise.")
|
24
25
|
end
|
25
26
|
end
|
@@ -34,14 +34,14 @@ module Celluloid
|
|
34
34
|
@actor = @type.send(@method, *@args, &@block)
|
35
35
|
@registry.add(@name, @actor, @branch) if @name
|
36
36
|
invoke_injection(:after_start)
|
37
|
-
rescue Celluloid::
|
38
|
-
Internals::Logger.error("
|
37
|
+
rescue Celluloid::TaskTimeout => ex
|
38
|
+
Internals::Logger.error("TaskTimeout at start of supervised instance of #{@type}")
|
39
39
|
raise ex
|
40
40
|
# TODO: Implement timeout/retry.
|
41
41
|
# unless ( @retry += 1 ) <= INSTANCE_RETRY_LIMIT
|
42
42
|
# raise ex
|
43
43
|
# end
|
44
|
-
# Internals::Logger.warn("
|
44
|
+
# Internals::Logger.warn("TaskTimeout at start of supervised actor. Retrying in #{INSTANCE_RETRY_WAIT} seconds. ( Attempt #{@retry} of #{INSTANCE_RETRY_LIMIT} )")
|
45
45
|
# sleep INSTANCE_RETRY_WAIT
|
46
46
|
# retry
|
47
47
|
rescue => ex
|
@@ -82,7 +82,7 @@ module Celluloid
|
|
82
82
|
Celluloid.actor_system[actor]
|
83
83
|
end
|
84
84
|
end
|
85
|
-
Celluloid::
|
85
|
+
Celluloid::Actor::System.instance_exec(@configuration[:as], name) do |actor, where|
|
86
86
|
define_method(name) do
|
87
87
|
Celluloid.actor_system[actor]
|
88
88
|
end
|
@@ -97,7 +97,7 @@ module Celluloid
|
|
97
97
|
Celluloid.instance_eval do
|
98
98
|
remove_method(name) rescue nil # avoid warnings in tests
|
99
99
|
end
|
100
|
-
Celluloid::
|
100
|
+
Celluloid::Actor::System.instance_eval do
|
101
101
|
remove_method(name) rescue nil # avoid warnings in tests
|
102
102
|
end
|
103
103
|
end
|
@@ -2,10 +2,10 @@ module Celluloid
|
|
2
2
|
module Supervision
|
3
3
|
class Configuration
|
4
4
|
class << self
|
5
|
-
def valid?(configuration,
|
5
|
+
def valid?(configuration, fails=false)
|
6
6
|
parameters(:mandatory).each do |k|
|
7
7
|
unless configuration.key? k
|
8
|
-
if
|
8
|
+
if fails
|
9
9
|
fail Error::Incomplete, "Missing `:#{k}` in supervision configuration."
|
10
10
|
else
|
11
11
|
return false
|
@@ -16,8 +16,8 @@ module Celluloid
|
|
16
16
|
unless configuration[args].is_a? Proc
|
17
17
|
__a = configuration[args] && configuration[args].count || 0
|
18
18
|
__arity = configuration[klass].allocate.method(:initialize).arity
|
19
|
-
unless __arity
|
20
|
-
if
|
19
|
+
unless (__arity < 0 && __a >= __arity.abs-1) || __a == __arity.abs
|
20
|
+
if fails
|
21
21
|
fail ArgumentError.new("#{__a} vs. #{__arity}")
|
22
22
|
else
|
23
23
|
return false
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: celluloid-supervision
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.20.
|
4
|
+
version: 0.20.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Donovan Keme
|
8
8
|
- Tony Arcieri
|
9
9
|
- Tim Carey-Smith
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-08-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,6 +82,20 @@ dependencies:
|
|
82
82
|
- - '>='
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
name: transpec
|
92
|
+
prerelease: false
|
93
|
+
type: :development
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
85
99
|
- !ruby/object:Gem::Dependency
|
86
100
|
requirement: !ruby/object:Gem::Requirement
|
87
101
|
requirements:
|
@@ -313,7 +327,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
313
327
|
version: 1.3.6
|
314
328
|
requirements: []
|
315
329
|
rubyforge_project:
|
316
|
-
rubygems_version: 2.4.
|
330
|
+
rubygems_version: 2.4.8
|
317
331
|
signing_key:
|
318
332
|
specification_version: 4
|
319
333
|
summary: Celluloid Supervision
|