celluloid 0.17.4 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +300 -81
- data/CONDUCT.md +13 -0
- data/CONTRIBUTING.md +39 -0
- data/README.md +54 -155
- data/REFACTOR.md +1 -0
- data/architecture.md +120 -0
- data/examples/basic_usage.rb +1 -1
- data/examples/configurations.rb +78 -0
- data/examples/futures.rb +1 -1
- data/examples/ring.rb +5 -4
- data/examples/simple_pmap.rb +1 -1
- data/examples/stack.rb +2 -2
- data/examples/supervisors_and_registry.rb +82 -0
- data/examples/timers.rb +2 -2
- data/lib/celluloid/actor/system.rb +13 -29
- data/lib/celluloid/actor.rb +27 -17
- data/lib/celluloid/autostart.rb +6 -1
- data/lib/celluloid/call/async.rb +2 -0
- data/lib/celluloid/call/sync.rb +10 -3
- data/lib/celluloid/calls.rb +13 -12
- data/lib/celluloid/cell.rb +5 -9
- data/lib/celluloid/condition.rb +3 -3
- data/lib/celluloid/core_ext.rb +0 -2
- data/lib/celluloid/debug.rb +3 -0
- data/lib/celluloid/exceptions.rb +2 -2
- data/lib/celluloid/future.rb +8 -10
- data/lib/celluloid/group/pool.rb +1 -3
- data/lib/celluloid/group/spawner.rb +2 -6
- data/lib/celluloid/group.rb +12 -8
- data/lib/celluloid/internals/call_chain.rb +15 -0
- data/lib/celluloid/internals/cpu_counter.rb +62 -0
- data/lib/celluloid/internals/handlers.rb +42 -0
- data/lib/celluloid/internals/links.rb +38 -0
- data/lib/celluloid/internals/logger.rb +104 -0
- data/lib/celluloid/internals/method.rb +34 -0
- data/lib/celluloid/internals/properties.rb +32 -0
- data/lib/celluloid/internals/receivers.rb +64 -0
- data/lib/celluloid/internals/registry.rb +102 -0
- data/lib/celluloid/internals/responses.rb +46 -0
- data/lib/celluloid/internals/signals.rb +24 -0
- data/lib/celluloid/internals/stack/dump.rb +12 -0
- data/lib/celluloid/internals/stack/states.rb +72 -0
- data/lib/celluloid/internals/stack/summary.rb +12 -0
- data/lib/celluloid/internals/stack.rb +74 -0
- data/lib/celluloid/internals/task_set.rb +51 -0
- data/lib/celluloid/internals/thread_handle.rb +52 -0
- data/lib/celluloid/internals/uuid.rb +40 -0
- data/lib/celluloid/logging/incident.rb +21 -0
- data/lib/celluloid/logging/incident_logger.rb +147 -0
- data/lib/celluloid/logging/incident_reporter.rb +49 -0
- data/lib/celluloid/logging/log_event.rb +20 -0
- data/lib/celluloid/logging/ring_buffer.rb +64 -0
- data/lib/celluloid/mailbox/evented.rb +13 -5
- data/lib/celluloid/mailbox.rb +22 -9
- data/lib/celluloid/notifications.rb +95 -0
- data/lib/celluloid/pool.rb +6 -0
- data/lib/celluloid/probe.rb +81 -0
- data/lib/celluloid/proxy/abstract.rb +9 -9
- data/lib/celluloid/proxy/async.rb +1 -1
- data/lib/celluloid/proxy/block.rb +2 -2
- data/lib/celluloid/proxy/cell.rb +1 -1
- data/lib/celluloid/proxy/future.rb +2 -4
- data/lib/celluloid/proxy/sync.rb +1 -3
- data/lib/celluloid/rspec.rb +22 -33
- data/lib/celluloid/supervision/configuration/injections.rb +8 -0
- data/lib/celluloid/supervision/configuration/instance.rb +113 -0
- data/lib/celluloid/supervision/configuration.rb +169 -0
- data/lib/celluloid/supervision/constants.rb +123 -0
- data/lib/celluloid/supervision/container/behavior/pool.rb +71 -0
- data/lib/celluloid/supervision/container/behavior/tree.rb +23 -0
- data/lib/celluloid/supervision/container/behavior.rb +89 -0
- data/lib/celluloid/supervision/container/injections.rb +8 -0
- data/lib/celluloid/supervision/container/instance.rb +116 -0
- data/lib/celluloid/supervision/container/pool.rb +210 -0
- data/lib/celluloid/supervision/container.rb +144 -0
- data/lib/celluloid/supervision/service.rb +27 -0
- data/lib/celluloid/supervision/supervise.rb +34 -0
- data/lib/celluloid/supervision/validation.rb +40 -0
- data/lib/celluloid/supervision/version.rb +5 -0
- data/lib/celluloid/supervision.rb +17 -0
- data/lib/celluloid/system_events.rb +11 -6
- data/lib/celluloid/task/fibered.rb +6 -2
- data/lib/celluloid/task/threaded.rb +3 -3
- data/lib/celluloid/task.rb +25 -12
- data/lib/celluloid/test.rb +5 -2
- data/lib/celluloid/thread.rb +0 -2
- data/lib/celluloid/version.rb +1 -1
- data/lib/celluloid.rb +74 -64
- data/spec/celluloid/block_spec.rb +29 -32
- data/spec/celluloid/calls_spec.rb +5 -15
- data/spec/celluloid/future_spec.rb +7 -1
- data/spec/celluloid/internals/cpu_counter_spec.rb +129 -0
- data/spec/celluloid/internals/links_spec.rb +43 -0
- data/spec/celluloid/internals/properties_spec.rb +40 -0
- data/spec/celluloid/internals/registry_spec.rb +62 -0
- data/spec/celluloid/internals/stack/dump_spec.rb +4 -0
- data/spec/celluloid/internals/stack/summary_spec.rb +4 -0
- data/spec/celluloid/internals/thread_handle_spec.rb +60 -0
- data/spec/celluloid/internals/uuid_spec.rb +9 -0
- data/spec/celluloid/logging/ring_buffer_spec.rb +36 -0
- data/spec/celluloid/mailbox/evented_spec.rb +11 -22
- data/spec/celluloid/misc/leak_spec.rb +3 -4
- data/spec/celluloid/notifications_spec.rb +140 -0
- data/spec/celluloid/probe_spec.rb +102 -0
- data/spec/celluloid/proxy_spec.rb +30 -30
- data/spec/celluloid/supervision/behavior_spec.rb +74 -0
- data/spec/celluloid/supervision/configuration_spec.rb +181 -0
- data/spec/celluloid/supervision/container_spec.rb +72 -0
- data/spec/celluloid/supervision/instance_spec.rb +13 -0
- data/spec/celluloid/supervision/root_spec.rb +28 -0
- data/spec/celluloid/supervision/supervisor_spec.rb +93 -0
- data/spec/celluloid/task/fibered_spec.rb +1 -3
- data/spec/celluloid/task/threaded_spec.rb +1 -3
- data/spec/shared/actor_examples.rb +58 -33
- data/spec/shared/group_examples.rb +2 -2
- data/spec/shared/mailbox_examples.rb +1 -1
- data/spec/shared/stack_examples.rb +87 -0
- data/spec/shared/task_examples.rb +2 -3
- data/spec/spec_helper.rb +2 -4
- data/spec/support/configure_rspec.rb +2 -3
- data/spec/support/coverage.rb +2 -4
- data/spec/support/crash_checking.rb +2 -2
- data/spec/support/examples/actor_class.rb +3 -8
- data/spec/support/examples/call_class.rb +2 -2
- data/spec/support/examples/container_class.rb +35 -0
- data/spec/support/examples/evented_mailbox_class.rb +1 -2
- data/spec/support/examples/stack_classes.rb +58 -0
- data/spec/support/examples/stack_methods.rb +23 -0
- data/spec/support/examples/subordinate_class.rb +19 -0
- data/spec/support/logging.rb +3 -34
- data/spec/support/loose_threads.rb +3 -16
- data/spec/support/reset_class_variables.rb +5 -1
- data/spec/support/stubbing.rb +1 -1
- metadata +91 -289
- data/culture/CONDUCT.md +0 -28
- data/culture/Gemfile +0 -9
- data/culture/LICENSE.txt +0 -22
- data/culture/README.md +0 -22
- data/culture/Rakefile +0 -5
- data/culture/SYNC.md +0 -70
- data/culture/celluloid-culture.gemspec +0 -18
- data/culture/gems/README.md +0 -39
- data/culture/gems/dependencies.yml +0 -85
- data/culture/gems/loader.rb +0 -101
- data/culture/rubocop/README.md +0 -38
- data/culture/rubocop/lint.yml +0 -8
- data/culture/rubocop/metrics.yml +0 -15
- data/culture/rubocop/perf.yml +0 -0
- data/culture/rubocop/rubocop.yml +0 -5
- data/culture/rubocop/style.yml +0 -57
- data/culture/spec/gems_spec.rb +0 -2
- data/culture/spec/spec_helper.rb +0 -0
- data/culture/spec/sync_spec.rb +0 -2
- data/culture/sync.rb +0 -56
- data/culture/tasks/rspec.rake +0 -5
- data/culture/tasks/rubocop.rake +0 -2
- data/lib/celluloid/actor/manager.rb +0 -7
- data/lib/celluloid/backported.rb +0 -2
- data/lib/celluloid/current.rb +0 -2
- data/lib/celluloid/deprecate.rb +0 -21
- data/lib/celluloid/fiber.rb +0 -32
- data/lib/celluloid/managed.rb +0 -3
- data/lib/celluloid/notices.rb +0 -15
- data/spec/deprecate/actor_system_spec.rb +0 -72
- data/spec/deprecate/block_spec.rb +0 -52
- data/spec/deprecate/calls_spec.rb +0 -39
- data/spec/deprecate/evented_mailbox_spec.rb +0 -34
- data/spec/deprecate/future_spec.rb +0 -32
- data/spec/deprecate/internal_pool_spec.rb +0 -4
- data/spec/support/env.rb +0 -21
data/culture/gems/README.md
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
# Motivation
|
2
|
-
To achieve the higher level of modularity, Celluloid was split into small sub-projects that naturally depend on each other.
|
3
|
-
Bundler can't handle circular dependencies properly and currently the only workaround is to list all celluloid-ish dependencies in both Gemfile and gemspec.
|
4
|
-
This is error-prone and not efficient. Thus it was required to put some better workaround in place.
|
5
|
-
|
6
|
-
# Configuration
|
7
|
-
The list of gems and their properties are now defined in `dependencies.yml`.
|
8
|
-
|
9
|
-
For example:
|
10
|
-
|
11
|
-
```yml
|
12
|
-
celluloid:
|
13
|
-
bundler:
|
14
|
-
github: celluloid/celluloid
|
15
|
-
branch: 0.17.0-prerelease
|
16
|
-
celluloid-extras:
|
17
|
-
bundler:
|
18
|
-
github: celluloid/celluloid-extras
|
19
|
-
celluloid-supervision:
|
20
|
-
bundler:
|
21
|
-
github: celluloid/celluloid-supervision
|
22
|
-
celluloid-pool:
|
23
|
-
bundler:
|
24
|
-
github: celluloid/celluloid-pool
|
25
|
-
celluloid-fsm:
|
26
|
-
bundler:
|
27
|
-
github: celluloid/celluloid-fsm
|
28
|
-
timers:
|
29
|
-
gemspec:
|
30
|
-
- ~> 4.0.0
|
31
|
-
bundler:
|
32
|
-
github: celluloid/timers
|
33
|
-
```
|
34
|
-
|
35
|
-
# Modification of `gemspec` and `Gemfile`
|
36
|
-
|
37
|
-
The injection of dependencies into `gemspec` and `Gemfile` is handled by `Celluloid::Sync.gems()`, which routes to either `Celluloid::Gems.gemspec` or `Celluloid::Gems.gemfile` depending on what is passed to it:
|
38
|
-
|
39
|
-
* Discussed in [SYNC.md](../SYNC.md#how-do-you-install-it-in-gemfile-and-gemspec-then)
|
@@ -1,85 +0,0 @@
|
|
1
|
-
bundler:
|
2
|
-
dependency: development
|
3
|
-
|
4
|
-
nenv:
|
5
|
-
dependency: development
|
6
|
-
|
7
|
-
dotenv:
|
8
|
-
dependency: development
|
9
|
-
|
10
|
-
benchmark_suite:
|
11
|
-
dependency: development
|
12
|
-
|
13
|
-
rubocop:
|
14
|
-
dependency: development
|
15
|
-
|
16
|
-
transpec:
|
17
|
-
dependency: development
|
18
|
-
|
19
|
-
pry:
|
20
|
-
dependency: development
|
21
|
-
|
22
|
-
rake:
|
23
|
-
dependency: development
|
24
|
-
|
25
|
-
rspec:
|
26
|
-
dependency: development
|
27
|
-
|
28
|
-
guard-rspec:
|
29
|
-
dependency: development
|
30
|
-
|
31
|
-
rspec-retry:
|
32
|
-
dependency: development
|
33
|
-
|
34
|
-
coveralls:
|
35
|
-
dependency: development
|
36
|
-
gemfile:
|
37
|
-
require: false
|
38
|
-
|
39
|
-
celluloid:
|
40
|
-
dependency: core
|
41
|
-
version: ">= 0.17.2"
|
42
|
-
gemfile:
|
43
|
-
github: celluloid/celluloid
|
44
|
-
branch: master
|
45
|
-
submodules: true
|
46
|
-
|
47
|
-
celluloid-essentials:
|
48
|
-
dependency: module
|
49
|
-
gemfile:
|
50
|
-
github: celluloid/celluloid-essentials
|
51
|
-
branch: master
|
52
|
-
submodules: true
|
53
|
-
|
54
|
-
celluloid-supervision:
|
55
|
-
dependency: module
|
56
|
-
gemfile:
|
57
|
-
github: celluloid/celluloid-supervision
|
58
|
-
branch: master
|
59
|
-
submodules: true
|
60
|
-
|
61
|
-
celluloid-pool:
|
62
|
-
dependency: module
|
63
|
-
gemfile:
|
64
|
-
github: celluloid/celluloid-pool
|
65
|
-
branch: master
|
66
|
-
submodules: true
|
67
|
-
|
68
|
-
celluloid-fsm:
|
69
|
-
dependency: module
|
70
|
-
gemfile:
|
71
|
-
github: celluloid/celluloid-fsm
|
72
|
-
branch: master
|
73
|
-
submodules: true
|
74
|
-
|
75
|
-
celluloid-extras:
|
76
|
-
dependency: module
|
77
|
-
gemfile:
|
78
|
-
github: celluloid/celluloid-extras
|
79
|
-
branch: master
|
80
|
-
submodules: true
|
81
|
-
|
82
|
-
timers:
|
83
|
-
version: ">= 4.1.1"
|
84
|
-
gemfile:
|
85
|
-
github: celluloid/timers
|
data/culture/gems/loader.rb
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
require "yaml"
|
2
|
-
|
3
|
-
module Celluloid
|
4
|
-
module Sync
|
5
|
-
module Gemfile
|
6
|
-
class << self
|
7
|
-
def [](dsl)
|
8
|
-
dsl.source("https://rubygems.org")
|
9
|
-
dsl.gemspec # Runs gemspec, but also @sets gem_name.
|
10
|
-
Gems.gemfile(dsl)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
module Gemspec
|
15
|
-
class << self
|
16
|
-
def [](gem)
|
17
|
-
Gems.gemspec(gem)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
module Gems
|
23
|
-
extend self
|
24
|
-
@gem_name = nil
|
25
|
-
|
26
|
-
undef gems rescue nil
|
27
|
-
def gems
|
28
|
-
File.expand_path("../dependencies.yml", __FILE__)
|
29
|
-
end
|
30
|
-
|
31
|
-
unless @dependencies ||= nil
|
32
|
-
@dependencies = YAML.load_file(gems) if File.exist?(gems)
|
33
|
-
end
|
34
|
-
|
35
|
-
unless @dependencies.is_a?(Hash) && @dependencies.any?
|
36
|
-
fail "Celluloid cannot find its dependencies."
|
37
|
-
end
|
38
|
-
|
39
|
-
undef core? rescue nil
|
40
|
-
def core?(name=@gem_name)
|
41
|
-
return false unless @dependencies[name].is_a? Hash
|
42
|
-
@dependencies[name]["dependency"] == "core"
|
43
|
-
end
|
44
|
-
|
45
|
-
undef separate? rescue nil
|
46
|
-
def separate?
|
47
|
-
!@dependencies.keys.include?(@gem_name)
|
48
|
-
end
|
49
|
-
|
50
|
-
undef gemspec rescue nil
|
51
|
-
def gemspec(gem)
|
52
|
-
@gem_name = gem.name
|
53
|
-
loader do |name, spec|
|
54
|
-
# Rules for dependencies, to avoid so-called circular dependency:
|
55
|
-
# - Only the core gem lists all the modules as runtime dependencies.
|
56
|
-
# - If this gem is not in the dependencies list, then it needs the core gem at runtime;
|
57
|
-
# the module gems are development dependencies only. This is a depending separate gem.
|
58
|
-
# There is the core gem, module gems, true dependencies, and separately depending gems.
|
59
|
-
# - If the dependency is a module, it is only a development dependency to other modules,
|
60
|
-
# and even the core gem is a development dependency. It is not expected to be used alone.
|
61
|
-
meth = case spec["dependency"]
|
62
|
-
when "core", "module"
|
63
|
-
# For the core gem, all modules are runtime dependencies.
|
64
|
-
# For separate gems, only the core gem is a runtime dependency.
|
65
|
-
if core? || (separate? && core?(name))
|
66
|
-
:add_runtime_dependency
|
67
|
-
else
|
68
|
-
:add_development_dependency
|
69
|
-
end
|
70
|
-
when "development"
|
71
|
-
:add_development_dependency
|
72
|
-
else
|
73
|
-
:add_dependency
|
74
|
-
end
|
75
|
-
gem.send(meth, name, spec["version"] || ">= 0")
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
undef gemfile rescue nil
|
80
|
-
def gemfile(dsl)
|
81
|
-
loader do |name, spec|
|
82
|
-
params = [name, spec["version"] || ">= 0"]
|
83
|
-
req = spec["gemfile"] || {}
|
84
|
-
params << req.each_with_object({}) { |(k, v), o| o[k.to_sym] = v }
|
85
|
-
current = dsl.dependencies.find { |d| d.name == name }
|
86
|
-
dsl.dependencies.delete(current) if current
|
87
|
-
dsl.gem(*params)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
private
|
92
|
-
|
93
|
-
def loader
|
94
|
-
@dependencies.each do |name, spec|
|
95
|
-
next if name == @gem_name
|
96
|
-
spec ||= {}
|
97
|
-
yield name, spec
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
data/culture/rubocop/README.md
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# About
|
2
|
-
[RuboCop](https://github.com/bbatsov/rubocop) is a ruby static code analyzer.
|
3
|
-
It's more than just a lint. It verifies the code against ruby best practices and performs code correctness analysis.
|
4
|
-
Celluloid culture doesn't always agree with all rubocop default policies and so we provide a rubocop configuration file that overrides its default behavior.
|
5
|
-
|
6
|
-
# Integration
|
7
|
-
|
8
|
-
[Integrate `celluloid/culture`](../README.md#integration), then include `culture/rupocop/.rubocop.yml` in your default rubocop config.
|
9
|
-
|
10
|
-
##### Add celluloid/culture as GIT submodule:
|
11
|
-
|
12
|
-
* See instructions: [Integrate the `celluloid/culture` sub-module](../README.md#integration)
|
13
|
-
|
14
|
-
##### Include `culture/rupocop/rubocop.yml` in the `.rubocop.yml` in the root of your project:
|
15
|
-
```yml
|
16
|
-
inherit_from:
|
17
|
-
- culture/rubocop/rubocop.yml
|
18
|
-
```
|
19
|
-
|
20
|
-
# How to add rubocop to your project
|
21
|
-
|
22
|
-
The `rubocop` gem is automatically included by `Celluloid::Sync.gems` when that is [implemented](../SYNC.md).
|
23
|
-
|
24
|
-
##### Add a 'rubocop' target in your `Rakefile`
|
25
|
-
|
26
|
-
# Hints
|
27
|
-
It's possible to use rubocop for autocorrection of minor problems.
|
28
|
-
|
29
|
-
Always verify these changes by running:
|
30
|
-
|
31
|
-
```sh
|
32
|
-
bundle exec rubocop
|
33
|
-
```
|
34
|
-
|
35
|
-
Once you are ready to auto-corret the issues you are shown, run it with the `-a` option:
|
36
|
-
```sh
|
37
|
-
bundle exec rubocop -a
|
38
|
-
```
|
data/culture/rubocop/lint.yml
DELETED
data/culture/rubocop/metrics.yml
DELETED
data/culture/rubocop/perf.yml
DELETED
File without changes
|
data/culture/rubocop/rubocop.yml
DELETED
data/culture/rubocop/style.yml
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
Style/Documentation:
|
2
|
-
Enabled: false
|
3
|
-
|
4
|
-
Style/ModuleFunction:
|
5
|
-
Enabled: false
|
6
|
-
|
7
|
-
Style/AndOr:
|
8
|
-
Enabled: true
|
9
|
-
|
10
|
-
Style/StringLiterals:
|
11
|
-
Enabled: true
|
12
|
-
EnforcedStyle: double_quotes
|
13
|
-
|
14
|
-
Style/EachWithObject:
|
15
|
-
Enabled: true
|
16
|
-
|
17
|
-
Style/InfiniteLoop:
|
18
|
-
Enabled: false
|
19
|
-
|
20
|
-
Style/SpaceAroundEqualsInParameterDefault:
|
21
|
-
Enabled: false
|
22
|
-
|
23
|
-
Style/SpaceInsideBlockBraces:
|
24
|
-
Enabled: false
|
25
|
-
|
26
|
-
Style/AccessModifierIndentation:
|
27
|
-
Enabled: false
|
28
|
-
|
29
|
-
Style/TrailingComma:
|
30
|
-
Enabled: true
|
31
|
-
EnforcedStyleForMultiline: comma
|
32
|
-
|
33
|
-
Style/SpaceInsideBlockBraces:
|
34
|
-
Enabled: true
|
35
|
-
EnforcedStyle: space
|
36
|
-
|
37
|
-
Style/SpaceInsideHashLiteralBraces:
|
38
|
-
Enabled: true
|
39
|
-
EnforcedStyle: no_space
|
40
|
-
|
41
|
-
Style/EmptyLinesAroundAccessModifier:
|
42
|
-
Enabled: false
|
43
|
-
|
44
|
-
Style/RescueModifier:
|
45
|
-
Enabled: false
|
46
|
-
|
47
|
-
Style/GlobalVars:
|
48
|
-
Enabled: false
|
49
|
-
|
50
|
-
Style/FormatString:
|
51
|
-
EnforcedStyle: percent
|
52
|
-
|
53
|
-
Style/TrailingUnderscoreVariable:
|
54
|
-
Enabled: false
|
55
|
-
|
56
|
-
Style/ParallelAssignment:
|
57
|
-
Enabled: false
|
data/culture/spec/gems_spec.rb
DELETED
data/culture/spec/spec_helper.rb
DELETED
File without changes
|
data/culture/spec/sync_spec.rb
DELETED
data/culture/sync.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require "forwardable"
|
2
|
-
|
3
|
-
module Celluloid
|
4
|
-
module Sync
|
5
|
-
class << self
|
6
|
-
undef gem_path rescue nil
|
7
|
-
def gem_path
|
8
|
-
File.expand_path("../../", __FILE__)
|
9
|
-
end
|
10
|
-
|
11
|
-
undef gem_name rescue nil
|
12
|
-
def gem_name
|
13
|
-
Dir["#{File.expand_path('../../', __FILE__)}/*.gemspec"].first.gsub(".gemspec", "").split("/").last
|
14
|
-
end
|
15
|
-
|
16
|
-
undef gem_name? rescue nil
|
17
|
-
def gem_name?
|
18
|
-
!gem_name.nil?
|
19
|
-
end
|
20
|
-
|
21
|
-
undef lib_path rescue nil
|
22
|
-
def lib_path
|
23
|
-
File.expand_path("../../lib", __FILE__)
|
24
|
-
end
|
25
|
-
|
26
|
-
undef lib_gempath rescue nil
|
27
|
-
def lib_gempath
|
28
|
-
"#{lib_path}/#{gem_name.split('-').join('/')}"
|
29
|
-
end
|
30
|
-
|
31
|
-
undef scenario rescue nil
|
32
|
-
def scenario
|
33
|
-
File.basename($PROGRAM_NAME)
|
34
|
-
end
|
35
|
-
|
36
|
-
undef bundler? rescue nil
|
37
|
-
def bundler?
|
38
|
-
scenario == "bundle"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
fail "Missing gemspec." unless gem_name?
|
43
|
-
$LOAD_PATH.push(gem_path)
|
44
|
-
$LOAD_PATH.push(lib_path)
|
45
|
-
|
46
|
-
# TODO: This will likely need to be done differently if INSIDE a cut gem.
|
47
|
-
if scenario == "bundle"
|
48
|
-
`cd #{gem_path}/culture; git pull origin master` if ARGV.first == "update"
|
49
|
-
end
|
50
|
-
|
51
|
-
require("#{gem_path}/culture/gems/loader")
|
52
|
-
if File.exist?(version = "#{lib_gempath}/version.rb")
|
53
|
-
require(version)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
data/culture/tasks/rspec.rake
DELETED
data/culture/tasks/rubocop.rake
DELETED
data/lib/celluloid/backported.rb
DELETED
data/lib/celluloid/current.rb
DELETED
data/lib/celluloid/deprecate.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
class Thread
|
2
|
-
def self.mailbox
|
3
|
-
Celluloid.mailbox
|
4
|
-
end
|
5
|
-
|
6
|
-
def self.receive(timeout = nil, &block)
|
7
|
-
Celluloid.receive(timeout, &block)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
# TODO: Remove link to Interal::Logger
|
12
|
-
module Celluloid
|
13
|
-
SyncCall = Call::Sync
|
14
|
-
EventedMailbox = Mailbox::Evented
|
15
|
-
InternalPool = Group::Pool
|
16
|
-
TaskThread = Task::Threaded
|
17
|
-
TaskFiber = Task::Fibered
|
18
|
-
ActorSystem = Actor::System
|
19
|
-
Task::TerminatedError = TaskTerminated
|
20
|
-
Task::TimeoutError = TaskTimeout
|
21
|
-
end
|
data/lib/celluloid/fiber.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# Fibers are hard... let's go shopping!
|
2
|
-
begin
|
3
|
-
require "fiber"
|
4
|
-
rescue LoadError => ex
|
5
|
-
if defined? JRUBY_VERSION
|
6
|
-
if RUBY_VERSION < "1.9.2"
|
7
|
-
raise LoadError, "Celluloid requires JRuby 1.9 mode. Please pass the --1.9 flag or set JRUBY_OPTS=--1.9"
|
8
|
-
end
|
9
|
-
|
10
|
-
# Fibers are broken on JRuby 1.6.5. This works around the issue
|
11
|
-
if JRUBY_VERSION[/^1\.6\.5/]
|
12
|
-
require "jruby"
|
13
|
-
org.jruby.ext.fiber.FiberExtLibrary.new.load(JRuby.runtime, false)
|
14
|
-
class org.jruby.ext.fiber::ThreadFiber
|
15
|
-
field_accessor :state
|
16
|
-
end
|
17
|
-
|
18
|
-
class Fiber
|
19
|
-
def alive?
|
20
|
-
JRuby.reference(self).state != org.jruby.ext.fiber.ThreadFiberState::FINISHED
|
21
|
-
end
|
22
|
-
end
|
23
|
-
else
|
24
|
-
# Just in case subsequent JRuby releases have broken fibers :/
|
25
|
-
raise ex
|
26
|
-
end
|
27
|
-
elsif defined?(RUBY_ENGINE) && RUBY_ENGINE == "rbx"
|
28
|
-
raise LoadError, "Celluloid requires Rubinius 1.9 mode. Please pass the -X19 flag."
|
29
|
-
else
|
30
|
-
raise ex
|
31
|
-
end
|
32
|
-
end
|
data/lib/celluloid/managed.rb
DELETED
data/lib/celluloid/notices.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module Celluloid
|
2
|
-
module Notices
|
3
|
-
class << self
|
4
|
-
@@notices = []
|
5
|
-
|
6
|
-
def backported
|
7
|
-
@@notices << [:info, "Celluloid #{Celluloid::VERSION} is running in BACKPORTED mode. [ http://git.io/vJf3J ]"]
|
8
|
-
end
|
9
|
-
|
10
|
-
def output
|
11
|
-
@@notices.each { |type, notice| Celluloid::Internals::Logger.send type, notice }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
RSpec.describe "Deprecated Celluloid::ActorSystem" do
|
2
|
-
subject { Celluloid::ActorSystem.new }
|
3
|
-
|
4
|
-
class DeprecatedTestActor
|
5
|
-
include Celluloid
|
6
|
-
end
|
7
|
-
|
8
|
-
it "supports non-global ActorSystem" do
|
9
|
-
subject.within do
|
10
|
-
expect(Celluloid.actor_system).to eq(subject)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
it "starts default actors" do
|
15
|
-
subject.start
|
16
|
-
expect(subject.registered).to eq(Celluloid::ActorSystem::ROOT_SERVICES.map { |r| r[:as] })
|
17
|
-
subject.shutdown
|
18
|
-
end
|
19
|
-
|
20
|
-
it "support getting threads" do
|
21
|
-
subject.start
|
22
|
-
queue = Queue.new
|
23
|
-
thread = subject.get_thread do
|
24
|
-
expect(Celluloid.actor_system).to eq(subject)
|
25
|
-
queue << nil
|
26
|
-
end
|
27
|
-
queue.pop
|
28
|
-
subject.shutdown
|
29
|
-
end
|
30
|
-
|
31
|
-
it "allows a stack dump" do
|
32
|
-
expect(subject.stack_dump).to be_a(Celluloid::StackDump)
|
33
|
-
end
|
34
|
-
|
35
|
-
it "returns named actors" do
|
36
|
-
subject.start
|
37
|
-
|
38
|
-
subject.within do
|
39
|
-
DeprecatedTestActor.supervise_as :test
|
40
|
-
end
|
41
|
-
|
42
|
-
expect(subject.registered).to include(:test)
|
43
|
-
subject.shutdown
|
44
|
-
end
|
45
|
-
|
46
|
-
it "returns running actors" do
|
47
|
-
expect(subject.running).to be_empty
|
48
|
-
|
49
|
-
first = subject.within do
|
50
|
-
DeprecatedTestActor.new
|
51
|
-
end
|
52
|
-
|
53
|
-
second = subject.within do
|
54
|
-
DeprecatedTestActor.new
|
55
|
-
end
|
56
|
-
|
57
|
-
expect(subject.running).to eq([first, second])
|
58
|
-
subject.shutdown
|
59
|
-
end
|
60
|
-
|
61
|
-
it "shuts down" do
|
62
|
-
subject.shutdown
|
63
|
-
|
64
|
-
expect { subject.get_thread }
|
65
|
-
.to raise_error(Celluloid::NotActive)
|
66
|
-
end
|
67
|
-
|
68
|
-
it "warns nicely when no actor system is started" do
|
69
|
-
expect { DeprecatedTestActor.new }
|
70
|
-
.to raise_error("Celluloid is not yet started; use Celluloid.boot")
|
71
|
-
end
|
72
|
-
end unless $CELLULOID_BACKPORTED == false
|
@@ -1,52 +0,0 @@
|
|
1
|
-
RSpec.describe "Deprecated Blocks", actor_system: :global do
|
2
|
-
class DeprecatedBlockActor
|
3
|
-
include Celluloid
|
4
|
-
|
5
|
-
def initialize(name)
|
6
|
-
@name = name
|
7
|
-
end
|
8
|
-
attr_reader :name
|
9
|
-
|
10
|
-
def ask_for_something(other)
|
11
|
-
sender_actor = current_actor
|
12
|
-
$data << [:outside, @name, current_actor.name]
|
13
|
-
other.do_something_and_callback do |value|
|
14
|
-
$data << [:yielded, @name, current_actor.name]
|
15
|
-
$data << receive_result(:self)
|
16
|
-
$data << current_actor.receive_result(:current_actor)
|
17
|
-
$data << sender_actor.receive_result(:sender)
|
18
|
-
"somevalue"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def do_something_and_callback
|
23
|
-
$data << [:something, @name, current_actor.name]
|
24
|
-
$data << yield(:foo)
|
25
|
-
end
|
26
|
-
|
27
|
-
def receive_result(result)
|
28
|
-
[result, @name, current_actor.name]
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
it "works" do
|
33
|
-
$data = []
|
34
|
-
|
35
|
-
a1 = DeprecatedBlockActor.new("one")
|
36
|
-
a2 = DeprecatedBlockActor.new("two")
|
37
|
-
|
38
|
-
a1.ask_for_something a2
|
39
|
-
|
40
|
-
expected = [
|
41
|
-
[:outside, "one", "one"],
|
42
|
-
[:something, "two", "two"],
|
43
|
-
[:yielded, "one", "one"],
|
44
|
-
[:self, "one", "one"],
|
45
|
-
[:current_actor, "one", "one"],
|
46
|
-
[:sender, "one", "one"],
|
47
|
-
"somevalue",
|
48
|
-
]
|
49
|
-
|
50
|
-
expect($data).to eq(expected)
|
51
|
-
end
|
52
|
-
end unless $CELLULOID_BACKPORTED == false
|
@@ -1,39 +0,0 @@
|
|
1
|
-
RSpec.describe "Deprecated Celluloid::SyncCall", actor_system: :global do
|
2
|
-
subject { Celluloid::SyncCall.new }
|
3
|
-
|
4
|
-
let(:actor) { DeprecatedCallExampleActor.new }
|
5
|
-
|
6
|
-
context "when obj does not respond to a method" do
|
7
|
-
it "raises a NoMethodError" do
|
8
|
-
expect do
|
9
|
-
actor.the_method_that_wasnt_there
|
10
|
-
end.to raise_exception(NoMethodError)
|
11
|
-
expect(actor).to be_alive
|
12
|
-
end
|
13
|
-
|
14
|
-
context "when obj raises during inspect" do
|
15
|
-
it "should emulate obj.inspect" do
|
16
|
-
expect(actor).to_not receive(:inspect)
|
17
|
-
expect { actor.no_such_method }.to raise_exception(
|
18
|
-
NoMethodError,
|
19
|
-
/undefined method `no_such_method' for #\<DeprecatedCallExampleActor:0x[a-f0-9]+>/,
|
20
|
-
)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
it "aborts with ArgumentError when a method is called with too many arguments" do
|
26
|
-
expect do
|
27
|
-
actor.actual_method("with too many arguments")
|
28
|
-
end.to raise_exception(ArgumentError)
|
29
|
-
|
30
|
-
expect(actor).to be_alive
|
31
|
-
end
|
32
|
-
|
33
|
-
it "preserves call chains across synchronous calls" do
|
34
|
-
actor2 = DeprecatedCallExampleActor.new(actor)
|
35
|
-
|
36
|
-
uuid, next_actor_uuid = actor2.chained_call_ids
|
37
|
-
expect(uuid).to eq next_actor_uuid
|
38
|
-
end
|
39
|
-
end unless $CELLULOID_BACKPORTED == false
|