Module: Celluloid::InstanceMethods

Defined in:
lib/celluloid.rb

Overview

These are methods we don't want added to the Celluloid singleton but to be defined on all classes that use Celluloid

Instance Method Summary collapse

Instance Method Details

#__arityObject


306
307
308
# File 'lib/celluloid.rb', line 306

def __arity
  method(:initialize).arity
end

#bare_objectObject Also known as: wrapped_object

Obtain the bare Ruby object the actor is wrapping. This is useful for only a limited set of use cases like runtime metaprogramming. Interacting directly with the bare object foregoes any kind of thread safety that Celluloid would ordinarily provide you, and the object is guaranteed to be shared with at least the actor thread. Tread carefully.

Bare objects can be identified via #inspect output:

>> actor
 => #<Celluloid::Actor(Foo:0x3fefcb77c194)>
>> actor.bare_object
 => #<WARNING: BARE CELLULOID OBJECT (Foo:0x3fefcb77c194)>

263
264
265
# File 'lib/celluloid.rb', line 263

def bare_object
  self
end

#inspectObject


284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
# File 'lib/celluloid.rb', line 284

def inspect
  return "..." if Celluloid.detect_recursion

  str = "#<"

  if leaked?
    str << Celluloid::BARE_OBJECT_WARNING_MESSAGE
  else
    str << "Celluloid::Proxy::Cell"
  end

  str << "(#{self.class}:0x#{object_id.to_s(16)})"
  str << " " unless instance_variables.empty?

  instance_variables.each do |ivar|
    next if ivar == Celluloid::OWNER_IVAR
    str << "#{ivar}=#{instance_variable_get(ivar).inspect} "
  end

  str.sub!(/\s$/, ">")
end

#leaked?Boolean

Are we being invoked in a different thread from our owner?

Returns:

  • (Boolean)

269
270
271
# File 'lib/celluloid.rb', line 269

def leaked?
  @celluloid_owner != Thread.current[:celluloid_actor]
end

#registered_nameObject Also known as: name

Obtain the name of the current actor


279
280
281
# File 'lib/celluloid.rb', line 279

def registered_name
  Actor.registered_name
end

#tap {|current_actor| ... } ⇒ Object

Yields:


273
274
275
276
# File 'lib/celluloid.rb', line 273

def tap
  yield current_actor
  current_actor
end