celluloid 0.12.0 → 0.12.1.pre
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.
- data/lib/celluloid.rb +19 -11
- data/lib/celluloid/pool_manager.rb +4 -0
- data/lib/celluloid/proxies/actor_proxy.rb +2 -2
- data/lib/celluloid/version.rb +1 -1
- data/spec/support/actor_examples.rb +7 -0
- metadata +11 -11
data/lib/celluloid.rb
CHANGED
@@ -6,7 +6,11 @@ require 'set'
|
|
6
6
|
module Celluloid
|
7
7
|
extend self # expose all instance methods as singleton methods
|
8
8
|
|
9
|
-
|
9
|
+
# How long actors have to terminate
|
10
|
+
SHUTDOWN_TIMEOUT = 120
|
11
|
+
|
12
|
+
# Warning message added to Celluloid objects accessed outside their actors
|
13
|
+
BARE_OBJECT_WARNING_MESSAGE = "WARNING: BARE CELLULOID OBJECT "
|
10
14
|
|
11
15
|
class << self
|
12
16
|
attr_accessor :logger # Thread-safe logger class
|
@@ -194,15 +198,24 @@ module Celluloid
|
|
194
198
|
# These are methods we don't want added to the Celluloid singleton but to be
|
195
199
|
# defined on all classes that use Celluloid
|
196
200
|
module InstanceMethods
|
197
|
-
# Obtain the Ruby object the actor is wrapping. This
|
198
|
-
#
|
199
|
-
# directly with the
|
201
|
+
# Obtain the bare Ruby object the actor is wrapping. This is useful for
|
202
|
+
# only a limited set of use cases like runtime metaprogramming. Interacting
|
203
|
+
# directly with the bare object foregoes any kind of thread safety that
|
200
204
|
# Celluloid would ordinarily provide you, and the object is guaranteed to
|
201
205
|
# be shared with at least the actor thread. Tread carefully.
|
202
|
-
|
206
|
+
#
|
207
|
+
# Bare objects can be identified via #inspect output:
|
208
|
+
#
|
209
|
+
# >> actor
|
210
|
+
# => #<Celluloid::Actor(Foo:0x3fefcb77c194)>
|
211
|
+
# >> actor.bare_object
|
212
|
+
# => #<WARNING: BARE CELLULOID OBJECT (Foo:0x3fefcb77c194)>
|
213
|
+
#
|
214
|
+
def bare_object; self; end
|
215
|
+
alias_method :wrapped_object, :bare_object
|
203
216
|
|
204
217
|
def inspect
|
205
|
-
str = "
|
218
|
+
str = "#<#{Celluloid::BARE_OBJECT_WARNING_MESSAGE}(#{self.class}:0x#{object_id.to_s(16)})"
|
206
219
|
ivars = instance_variables.map do |ivar|
|
207
220
|
"#{ivar}=#{instance_variable_get(ivar).inspect}"
|
208
221
|
end
|
@@ -240,11 +253,6 @@ module Celluloid
|
|
240
253
|
# directly inside of all classes that include Celluloid
|
241
254
|
#
|
242
255
|
|
243
|
-
# Is this actor alive?
|
244
|
-
def alive?
|
245
|
-
Thread.current[:actor].alive?
|
246
|
-
end
|
247
|
-
|
248
256
|
# Raise an exception in caller context, but stay running
|
249
257
|
def abort(cause)
|
250
258
|
cause = case cause
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Celluloid
|
2
2
|
# A proxy object returned from Celluloid::Actor.new/new_link which converts
|
3
3
|
# the normal Ruby method protocol into an inter-actor message protocol
|
4
|
-
class ActorProxy
|
4
|
+
class ActorProxy
|
5
5
|
attr_reader :mailbox, :thread
|
6
6
|
|
7
7
|
def initialize(actor)
|
@@ -20,7 +20,7 @@ module Celluloid
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def inspect
|
23
|
-
Actor.call
|
23
|
+
Actor.call(@mailbox, :inspect).sub(::Celluloid::BARE_OBJECT_WARNING_MESSAGE, "Celluloid::Actor")
|
24
24
|
rescue DeadActorError
|
25
25
|
"#<Celluloid::Actor(#{@klass}) dead>"
|
26
26
|
end
|
data/lib/celluloid/version.rb
CHANGED
@@ -207,6 +207,13 @@ shared_context "a Celluloid Actor" do |included_module|
|
|
207
207
|
actor.wrapped_object.should be_a actor_class
|
208
208
|
end
|
209
209
|
|
210
|
+
it "warns about leaked wrapped objects via #inspect" do
|
211
|
+
actor = actor_class.new "Troy McClure"
|
212
|
+
|
213
|
+
actor.inspect.should_not include Celluloid::BARE_OBJECT_WARNING_MESSAGE
|
214
|
+
actor.wrapped_object.inspect.should include Celluloid::BARE_OBJECT_WARNING_MESSAGE
|
215
|
+
end
|
216
|
+
|
210
217
|
describe 'mocking methods' do
|
211
218
|
let(:actor) { actor_class.new "Troy McClure" }
|
212
219
|
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: celluloid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
5
|
-
prerelease:
|
4
|
+
version: 0.12.1.pre
|
5
|
+
prerelease: 7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Tony Arcieri
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: timers
|
16
|
-
requirement: &
|
16
|
+
requirement: &70119222902540 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70119222902540
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &70119222902160 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70119222902160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70119222901700 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70119222901700
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: benchmark_suite
|
49
|
-
requirement: &
|
49
|
+
requirement: &70119222901280 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70119222901280
|
58
58
|
description: Celluloid enables people to build concurrent programs out of concurrent
|
59
59
|
objects just as easily as they build sequential programs out of sequential objects
|
60
60
|
email:
|