This is a Ruby tree! It shows every object from the Ruby Programming Language in a tree format.

Ractor::ClosedError

        # Ractor::ClosedError < rb_eStopIteration

(from ruby core)
---
Raised when an attempt is made to send a message to a closed port, or to
retrieve a message from a closed and empty port. Ports may be closed
explicitly with Ractor#close_outgoing/close_incoming and are closed
implicitly when a Ractor terminates.

    r = Ractor.new { sleep(500) }
    r.close_outgoing
    r.take # Ractor::ClosedError

ClosedError is a descendant of StopIteration, so the closing of the
ractor will break the loops without propagating the error:

    r = Ractor.new do
      loop do
        msg = receive # raises ClosedError and loop traps it
        puts "Received: #{msg}"
      end
      puts "loop exited"
    end

    3.times{|i| r << i}
    r.close_incoming
    r.take
    puts "Continue successfully"

This will print:

    Received: 0
    Received: 1
    Received: 2
    loop exited
    Continue successfully
---

      

This is MURDOC! A Ruby documentation browser inspired by Smalltalk-80. It allows you to learn about Ruby by browsing through its class hierarchies, and see any of its methods.