{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 5-11 Process" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-11-1 子プロセスの生成" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15653" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pid = Process.fork do\n", " puts 'From child process'\n", " exit\n", "end\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "forked: 15652\n" ] } ], "source": [ "pid = Process.fork\n", "\n", "if pid\n", " puts \"forked: #{$$}\"\n", "else\n", " puts 'From child process'\n", " exit\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-11-2 子プロセスの待ち合わせ" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15655" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pid = Process.fork do\n", " sleep 10\n", " exit\n", "end\n", "\n", "Process.waitpid pid\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-11-3 プログラムのデーモン化" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "current_time.rb として保存し実行\n", "\n", "``` ruby\n", "require 'socket'\n", "\n", "Process.daemon # プロセスをデーモンとして動作させる\n", "\n", "TCPServer.open 'localhost', 4423 do |server|\n", " loop do\n", " client = server.accept # クライアントからの接続を待ち受ける\n", "\n", " client.puts Time.now # 現在時刻を返す\n", "\n", " client.close\n", " end\n", "end\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5-12 Struct" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-12-1 基本的な使い方" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n", "\"male\"\n", "20\n", "[:age, :gender]\n" ] }, { "data": { "text/plain": [ "[:age, :gender]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Human = Struct.new(:age, :gender)\n", "\n", "human = Human.new(10, 'male')\n", "p human.age\n", "p human.gender\n", "human.age = 20\n", "\n", "p human[:age]\n", "human[:age] = 100\n", "\n", "p Human.members\n", "human.members" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "50\n" ] }, { "data": { "text/plain": [ "Class" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 他の言語のように、値渡しになるわけではなく、Struct も Class\n", "human2 = human\n", "human2.age = 50\n", "p human2.age\n", "human.age\n", "\n", "\n", "Human.class" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Struct::Human" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Struct.new('Human', 'age', 'gender')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "(pry):41: warning: already initialized constant Human\n", "(pry):19: warning: previous definition of Human was here\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Struct::Age\n" ] }, { "ename": "NameError", "evalue": "identifier age needs to be constant", "output_type": "error", "traceback": [ "\u001b[31mNameError\u001b[0m: identifier age needs to be constant", "\u001b[37m(pry):43:in `new'\u001b[0m", "\u001b[37m(pry):43:in `
'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pry-0.11.3/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pry-0.11.3/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pry-0.11.3/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pry-0.11.3/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pry-0.11.3/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pry-0.11.3/lib/pry/pry_instance.rb:242:in `block in eval'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pry-0.11.3/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/pry-0.11.3/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:66:in `eval'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/backend.rb:12:in `eval'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:87:in `execute_request'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/kernel.rb:37:in `run'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/lib/iruby/command.rb:34:in `run'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/iruby-0.3/bin/iruby:5:in `'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/ketchup/.rbenv/versions/2.5.1/bin/iruby:23:in `
'\u001b[0m" ] } ], "source": [ "p Struct::Human.new\n", "p Human = Struct.new('Age', 'Gender')\n", "\n", "p Human = Struct.new('age', 'gender')\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#\n", "a\n", "b\n", "c\n", "[:one, :two, :three]\n", "one\n", "a\n", "two\n", "b\n", "three\n", "c\n", "[\"A\", \"B\", \"C\"]\n" ] }, { "data": { "text/plain": [ "{:one=>\"a\", :two=>\"b\", :three=>\"c\"}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Foo = Struct.new(:one, :two, :three)\n", "p foo = Foo.new('a', 'b', 'c')\n", "\n", "foo.each {|value| puts value }\n", "\n", "p foo.members\n", "\n", "foo.each_pair { |field, value| puts field, value }\n", "\n", "p foo.map { |value| value.upcase }\n", "\n", "Hash[foo.each_pair.to_a]\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#[:c, :d]}>\n" ] }, { "data": { "text/plain": [ ":d" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Ruby 2.3 から Struct にも dig メソッドが追加\n", "Bar = Struct.new(:a)\n", "p bar = Bar.new({b: [:c, :d]})\n", "\n", "bar.dig(:a, :b, 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-12-2 メソッドの定義" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "(pry):61: warning: redefining constant Struct::Human\n", "(pry):61: warning: already initialized constant Human\n", "(pry):41: warning: previous definition of Human was here\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "false\n", "true\n" ] }, { "data": { "text/plain": [ "[Struct::Human, Struct, Enumerable, Object, PP::ObjectMixin, JSON::Ext::Generator::GeneratorMethods::Object, Kernel, BasicObject]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Human = Struct.new('Human', :age, :gender) do\n", " def teen?\n", " (13..19).include?(age)\n", " end\n", "end\n", "\n", "p Human.new(10).teen?\n", "p Human.new(14).teen?\n", "\n", "Human.ancestors" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "(pry):71: warning: redefining constant Struct::Human\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "false\n", "true\n" ] }, { "data": { "text/plain": [ "[Human2, Struct::Human, Struct, Enumerable, Object, PP::ObjectMixin, JSON::Ext::Generator::GeneratorMethods::Object, Kernel, BasicObject]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Human2 < Struct.new('Human', :age, :gender)\n", " def teen?\n", " (13..19).include?(age)\n", " end\n", "end\n", "\n", "p Human2.new(10).teen?\n", "p Human2.new(14).teen?\n", "\n", "Human2.ancestors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5-13 Marshal" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\"\\x04\\b[\\ti\\x06I\\\"\\x062\\x06:\\x06ET[\\x06i\\bIu:\\tTime\\r\\xA9\\xA3\\x1D\\x80\\xF5\\x17o@\\a:\\voffseti\\x02\\x90~:\\tzoneI\\\"\\bJST\\x06;\\x00F\"\n" ] }, { "data": { "text/plain": [ "[1, \"2\", [3], 2018-09-29 18:16:06 +0900]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "array = [1, '2', [3], Time.now]\n", "\n", "p m = Marshal.dump(array)\n", "Marshal.load(m)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-13-1 永続化できないオブジェクト" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-13-2 バージョン" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n" ] }, { "data": { "text/plain": [ "8" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p Marshal::MAJOR_VERSION\n", "Marshal::MINOR_VERSION" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-13-3 カスタマイズ" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\"\\x04\\bU:\\x0ESomethingI\\\"\\x0Enecessary\\x06:\\x06ET\"\n", "\"necessary\"\n", "nil\n" ] } ], "source": [ "class Something\n", " attr_accessor :source, :temporary\n", " \n", " def marshal_dump\n", " source\n", " end\n", " \n", " def marshal_load(s)\n", " self.source = s\n", " end\n", "end\n", "\n", "origin = Something.new\n", "origin.source = 'necessary'\n", "origin.temporary = 'drop me'\n", "\n", "p data = Marshal.dump(origin)\n", "\n", "restored = Marshal.load(data)\n", "p restored.source\n", "p restored.temporary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5-14 ObjectSpace" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5-14-1 オブジェクトの操作" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Gem::Resolver::SpecSpecification\n", "#\n", "Gem::Resolver::Specification\n", "#\n", "Gem::Version\n", "Gem::Resolver::Molinillo::Resolver::Resolution::Conflict\n", "#\n", "Gem::Resolver::Molinillo::DependencyGraph::AddEdgeNoCircular\n", "Gem::Resolver::Molinillo::Resolver::Resolution\n", "Gem::UnsatisfiableDependencyError\n", "Gem::SystemExitException\n", "Gem::VerificationError\n", "Gem::RubyVersionMismatch\n", "Gem::RemoteSourceException\n", "Gem::RemoteInstallationSkipped\n", "Gem::RemoteInstallationCancelled\n", "Gem::RemoteError\n", "Gem::OperationNotSupportedError\n", "Gem::InvalidSpecificationException\n", "Gem::RuntimeRequirementNotMetError\n", "Gem::InstallError\n", "Gem::ImpossibleDependenciesError\n", "Gem::SpecificGemNotFoundException\n", "Gem::GemNotFoundException\n", "Gem::FormatException\n", "Gem::FilePermissionError\n", "Gem::EndOfYAMLException\n", "Gem::DocumentError\n", "Gem::GemNotInHomeException\n", "Gem::DependencyResolutionError\n", "Gem::DependencyRemovalException\n", "Gem::DependencyError\n", "Gem::CommandLineError\n", "Gem::Exception\n", "Gem::RequestSet::Lockfile::Tokenizer::Token\n", "#\n", "Gem::RequestSet::Lockfile::Tokenizer\n", "#\n", "Gem::Resolver::Molinillo::DependencyGraph::Action\n", "#\n", "Gem::Resolver::Molinillo::DependencyGraph\n", "Gem::RequestSet::Lockfile::Parser\n", "Gem::Requirement::BadRequirementError\n", "#\n", "#\n", "Gem::Requirement\n", "#\n", "#\n", "Gem::Platform\n", "Gem::Resolver::IndexSpecification\n", "Gem::Resolver::GitSpecification\n", "#\n", "Gem::Resolver::Molinillo::VersionConflict\n", "Gem::Resolver::Molinillo::CircularDependencyError\n", "Gem::Resolver::BestSet\n", "Gem::Resolver::Molinillo::NoSuchDependencyError\n", "Gem::Resolver::Molinillo::ResolverError\n", "#\n", "Gem::Resolver::Molinillo::DependencyGraph::Log\n", "#\n", "Gem::Resolver::Molinillo::DependencyGraph::Tag\n", "Gem::Source::Git\n", "#\n", "CZMQ::FFI::Zclock::DestroyedError\n", "#\n", "CZMQ::FFI::Zclock\n", "Pry::LastException\n", "#\n", "Pry::Command::CodeCollector\n", "OpenSSL::Digest::Digest\n", "#\n", "OpenSSL::Digest::SHA\n", "#\n", "OpenSSL::Digest::DSS1\n", "#\n", "OpenSSL::Digest::DSS\n", "#\n", "OpenSSL::Digest::SHA512\n", "#\n", "OpenSSL::Digest::SHA384\n", "#\n", "OpenSSL::Digest::SHA256\n", "#\n", "OpenSSL::Digest::SHA224\n", "OpenSSL::Cipher::Cipher\n", "OpenSSL::Cipher::AES256\n", "#\n", "OpenSSL::Digest::SHA1\n", "OpenSSL::Cipher::AES192\n", "#\n", "OpenSSL::Digest::RIPEMD160\n", "#\n", "OpenSSL::Digest::MDC2\n", "#\n", "OpenSSL::Digest::MD5\n", "#\n", "OpenSSL::Digest::MD4\n", "#\n", "OpenSSL::Digest::MD2\n", "#>\n", "#\n", "MultiJson::Adapters::JsonCommon\n", "#>\n", "#\n", "MultiJson::Adapter\n", "#\n", "Pry::Command::Ls::LocalNames\n", "#\n", "Pry::REPL\n", "Pry::Command::Ls::InstanceVars\n", "Foo\n", "Pry::Command::Ls::SelfMethods\n", "Pry::Command::Ls::Methods\n", "#\n", "MultiJson::Adapters::JsonGem\n", "#\n", "Pry::InputLock::Interrupt\n", "#\n", "Pry::InputLock\n", "OpenSSL::SSL::SSLServer\n", "#\n", "OpenSSL::Cipher::RC5\n", "OpenSSL::Cipher::RC4\n", "OpenSSL::Cipher::RC2\n", "OpenSSL::Cipher::IDEA\n", "OpenSSL::Cipher::DES\n", "OpenSSL::Cipher::BF\n", "OpenSSL::Cipher::CAST5\n", "OpenSSL::Cipher::AES\n", "Pry::Command::Edit\n", "Pry::Command::SimplePrompt\n", "Pry::Command::Ri\n", "#\n", "JSON::Ext::Generator::State\n", "Pry::Command::RaiseUp\n", "JSON::Ext::Parser\n", "#\n", "CZTop::Socket\n", "Pry::Command::ShellMode\n", "#\n", "#\n", "#>\n", "#\n", "CZMQ::FFI::Zfile::DestroyedError\n", "#\n", "CZMQ::FFI::Zfile\n", "#\n", "Pry::ClassCommand\n", "Pry::BlockCommand\n", "#>\n", "#\n", "Pry::Command\n", "#>\n", "#>\n", "#>\n", "Pry::Command::GemReadme\n", "#\n", "#\n", "CZMQ::FFI::Zsys::DestroyedError\n", "#\n", "CZMQ::FFI::Zsys\n", "Pry::Command::Version\n", "Pry::Command::ListInspectors\n", "#>\n", "Pry::Command::Stat\n", "FFI::Type::Builtin\n", "FFI::Type\n", "#\n", "#\n", "#\n", "Pry::Config::Default\n", "CZMQ::FFI::Zconfig::DestroyedError\n", "#\n", "CZMQ::FFI::Zconfig\n", "Pry::Command::SwitchTo\n", "Pry::Command::ChangePrompt\n", "CodeRay::Encoders::Terminal\n", "Pry::Command::ShellCommand\n", "#\n", "Socket::UDPSource\n", "CZTop::CertStore\n", "#\n", "CZTop::Certificate\n", "#\n", "Pry::Method::Patcher\n", "Pry::Command::ReloadCode\n", "Pry::Command::BangPry\n", "Pry::Method::Disowned\n", "#\n", "CZTop::Config\n", "CZTop::Proxy::Configurator\n", "CZTop::Proxy\n", "#\n", "#\n", "#\n", "#\n", "#\n", "#\n", "#\n", "#>\n", "#\n", "CZTop::Z85\n", "Pry::Command::Wtf\n", "CZTop::Config::Traversing::ChildrenAccessor\n", "CZTop::Config::Traversing::SiblingsAccessor\n", "CZTop::Config::Traversing::FamilyAccessor\n", "#\n", "#\n", "CodeRay::PluginHost::HostNotFound\n", "CodeRay::PluginHost::PluginNotFound\n", "Pry::Helpers::Table\n", "#\n", "CZTop::Poller::ZMQ::PollerEvent\n", "#\n", "#\n", "CZTop::Poller::ZPoller\n", "CZTop::Socket::GATHER\n", "CZTop::Socket::SCATTER\n", "CZTop::Socket::DISH\n", "CZTop::Socket::RADIO\n", "CZTop::Socket::STREAM\n", "CZTop::Socket::PAIR\n", "CZTop::Socket::PULL\n", "CZTop::Socket::PUSH\n", "CZTop::Socket::XSUB\n", "CZTop::Socket::XPUB\n", "CZTop::Socket::SUB\n", "CZTop::Socket::PUB\n", "CZTop::Socket::ROUTER\n", "CZTop::Socket::DEALER\n", "CZTop::Socket::REP\n", "CZTop::Socket::REQ\n", "CZTop::Socket::SERVER\n", "CZTop::Socket::CLIENT\n", "Pry::Command::ShowDoc\n", "CZTop::Z85::Pipe::Strategy::Parallel\n", "CZTop::Z85::Pipe::Strategy::Sequential\n", "CZTop::Z85::Pipe::Strategy\n", "CZTop::Z85::Pipe\n", "Human2\n", "Struct::Human\n", "CZTop::ZAP::Response::InternalError\n", "CZTop::ZAP::Response::TemporaryError\n", "#\n", "CZTop::ZAP::Response\n", "#\n", "CZTop::ZAP::Request\n", "CZTop::ZAP::VersionMismatch\n", "CZTop::ZAP::Error\n", "#\n", "#\n", "#\n", "Pry::Command::Ls::Constants\n", "Struct::Age\n", "Pry::Command::Ls::Globals\n", "Pry::Slop::InvalidCommandError\n", "Pry::Slop::InvalidOptionError\n", "Pry::Slop::InvalidArgumentError\n", "Pry::Slop::MissingOptionError\n", "Pry::Slop::MissingArgumentError\n", "Pry::Slop::Error\n", "Pry::Slop::Commands\n", "Pry::Command::Ls::Formatter\n", "#\n", "Pry::Slop\n", "Struct::Human\n", "StringIO\n", "#\n", "Gem::List\n", "URI::HTTPS\n", "#\n", "URI::HTTP\n", "Gem::StubSpecification::StubLine\n", "#\n", "Gem::StubSpecification\n", "URI::BadURIError\n", "URI::InvalidComponentError\n", "URI::InvalidURIError\n", "URI::Error\n", "#\n", "#\n", "#\n", "Gem::Resolver::Molinillo::ResolutionState\n", "URI::RFC3986_Parser\n", "#\n", "URI::FTP\n", "Gem::PathSupport\n", "#\n", "Gem::Resolver::Molinillo::DependencyGraph::DetachVertexNamed\n", "URI::RFC2396_Parser\n", "#\n", "#\n", "Gem::BasicSpecification\n", "TracePoint\n", "Complex::compatible\n", "Complex\n", "Rational::compatible\n", "Rational\n", "FiberError\n", "Fiber\n", "#\n", "#\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "#\n", "Process::Tms\n", "Process::Status\n", "Process::Waiter\n", "#\n", "Thread::ConditionVariable\n", "Thread::SizedQueue\n", "ClosedQueueError\n", "Thread::Queue\n", "Thread::Mutex\n", "ThreadError\n", "ThreadGroup\n", "RubyVM::InstructionSequence\n", "Thread::Backtrace::Location\n", "Thread::Backtrace\n", "#\n", "Thread\n", "RubyVM\n", "Enumerator::Yielder\n", "Enumerator::Generator\n", "StopIteration\n", "Enumerator::Lazy\n", "Enumerator\n", "ObjectSpace::WeakMap\n", "#\n", "#\n", "#\n", "#\n", "Math::DomainError\n", "Binding\n", "UnboundMethod\n", "Method\n", "SystemStackError\n", "LocalJumpError\n", "Proc\n", "Gem::Dependency\n", "#\n", "Random\n", "#>\n", "#>\n", "#>\n", "#>\n", "#\n", "Time\n", "#\n", "Dir\n", "File::Stat\n", "#\n", "File\n", "ARGF.class\n", "#\n", "URI::Generic\n", "IO::EINPROGRESSWaitWritable\n", "IO::EINPROGRESSWaitReadable\n", "IO::EAGAINWaitWritable\n", "IO::EAGAINWaitReadable\n", "#\n", "IO\n", "EOFError\n", "IOError\n", "Range\n", "#\n", "Encoding::Converter\n", "Encoding::ConverterNotFoundError\n", "Encoding::InvalidByteSequenceError\n", "Encoding::UndefinedConversionError\n", "MatchData\n", "Regexp\n", "RegexpError\n", "#\n", "Struct\n", "#>\n", "Hash\n", "#>\n", "Array\n", "Errno::ERPCMISMATCH\n", "Errno::EPROGUNAVAIL\n", "Errno::EPROGMISMATCH\n", "Errno::EPROCUNAVAIL\n", "Errno::EPROCLIM\n", "Errno::ENOTSUP\n", "Errno::ENOATTR\n", "Errno::ENEEDAUTH\n", "Errno::EFTYPE\n", "Errno::EBADRPC\n", "Errno::EAUTH\n", "Errno::EOWNERDEAD\n", "Errno::ENOTRECOVERABLE\n", "Errno::ECANCELED\n", "Errno::EDQUOT\n", "Errno::ESTALE\n", "Errno::EINPROGRESS\n", "Errno::EALREADY\n", "Errno::EHOSTUNREACH\n", "Errno::EHOSTDOWN\n", "Errno::ECONNREFUSED\n", "Errno::ETIMEDOUT\n", "Errno::ETOOMANYREFS\n", "Errno::ESHUTDOWN\n", "Errno::ENOTCONN\n", "Errno::EISCONN\n", "Gem::SourceFetchProblem\n", "Errno::ENOBUFS\n", "Errno::ECONNRESET\n", "Errno::ECONNABORTED\n", "Errno::ENETRESET\n", "Errno::ENETUNREACH\n", "Errno::ENETDOWN\n", "Errno::EADDRNOTAVAIL\n", "Errno::EADDRINUSE\n", "Errno::EAFNOSUPPORT\n", "Errno::EPFNOSUPPORT\n", "Errno::EOPNOTSUPP\n", "Errno::ESOCKTNOSUPPORT\n", "Errno::EPROTONOSUPPORT\n", "Errno::ENOPROTOOPT\n", "Errno::EPROTOTYPE\n", "Errno::EMSGSIZE\n", "Gem::PlatformMismatch\n", "Errno::EDESTADDRREQ\n", "Errno::ENOTSOCK\n", "Errno::EUSERS\n", "Gem::ErrorReason\n", "Errno::EILSEQ\n", "Errno::EOVERFLOW\n", "Gem::ConflictError\n", "Errno::EBADMSG\n", "Errno::EMULTIHOP\n", "Errno::EPROTO\n", "Errno::ENOLINK\n", "Errno::EREMOTE\n", "Gem::MissingSpecVersionError\n", "Errno::ENOSR\n", "Errno::ETIME\n", "Errno::ENODATA\n", "Errno::ENOSTR\n", "Gem::MissingSpecError\n", "Errno::EIDRM\n", "Errno::ENOMSG\n", "Gem::LoadError\n", "Errno::ELOOP\n", "Errno::ENOTEMPTY\n", "Errno::ENOSYS\n", "Errno::ENOLCK\n", "Errno::ENAMETOOLONG\n", "Errno::EDEADLK\n", "Errno::ERANGE\n", "Errno::EDOM\n", "Errno::EPIPE\n", "Errno::EMLINK\n", "Errno::EROFS\n", "Errno::ESPIPE\n", "Errno::ENOSPC\n", "Errno::EFBIG\n", "Errno::ETXTBSY\n", "Errno::ENOTTY\n", "Errno::EMFILE\n", "Errno::ENFILE\n", "Errno::EINVAL\n", "Errno::EISDIR\n", "Errno::ENOTDIR\n", "Errno::ENODEV\n", "Errno::EXDEV\n", "Errno::EEXIST\n", "Errno::EBUSY\n", "Errno::ENOTBLK\n", "Errno::EFAULT\n", "Errno::EACCES\n", "Errno::ENOMEM\n", "Errno::EAGAIN\n", "Errno::ECHILD\n", "Errno::EBADF\n", "Errno::ENOEXEC\n", "Errno::E2BIG\n", "Errno::ENXIO\n", "Errno::EIO\n", "Errno::EINTR\n", "Errno::ESRCH\n", "Errno::ENOENT\n", "Errno::EPERM\n", "Errno::NOERROR\n", "Float\n", "Integer\n", "Numeric\n", "FloatDomainError\n", "ZeroDivisionError\n", "UncaughtThrowError\n", "Warning::buffer\n", "#\n", "SystemCallError\n", "Encoding::CompatibilityError\n", "EncodingError\n", "NoMemoryError\n", "SecurityError\n", "FrozenError\n", "RuntimeError\n", "NoMethodError\n", "NameError::message\n", "NameError\n", "NotImplementedError\n", "LoadError\n", "SyntaxError\n", "ScriptError\n", "RangeError\n", "KeyError\n", "IndexError\n", "#\n", "ArgumentError\n", "TypeError\n", "#\n", "StandardError\n", "Interrupt\n", "SignalException\n", "fatal\n", "SystemExit\n", "#\n", "Exception\n", "Symbol\n", "#\n", "String\n", "Encoding\n", "#>\n", "FalseClass\n", "TrueClass\n", "#\n", "Data\n", "#\n", "#\n", "#\n", "#\n", "NilClass\n", "#\n", "Class\n", "Module\n", "Object\n", "BasicObject\n", "#\n", "Gem::Resolver::Molinillo::DependencyGraph::AddVertex\n", "CZMQ::FFI::Zpoller::DestroyedError\n", "#\n", "CZMQ::FFI::Zpoller\n", "#\n", "OpenSSL::KDF::KDFError\n", "OpenSSL::ASN1::EndOfContent\n", "OpenSSL::ASN1::Set\n", "OpenSSL::ASN1::Sequence\n", "OpenSSL::ASN1::GeneralizedTime\n", "OpenSSL::ASN1::UTCTime\n", "OpenSSL::ASN1::ObjectId\n", "OpenSSL::ASN1::Null\n", "OpenSSL::ASN1::BMPString\n", "OpenSSL::ASN1::UniversalString\n", "OpenSSL::ASN1::GeneralString\n", "OpenSSL::ASN1::ISO64String\n", "CZMQ::FFI::Zstr::DestroyedError\n", "#\n", "CZMQ::FFI::Zstr\n", "#>\n", "#\n", "Delegator\n", "Gem::Resolver::APISpecification\n", "OpenSSL::PKey::DH\n", "OpenSSL::PKey::DHError\n", "#\n", "OpenSSL::Config\n", "OpenSSL::ConfigError\n", "Gem::Resolver::LockSet\n", "#\n", "OpenSSL::Digest\n", "Gem::Resolver::Molinillo::DependencyGraph::Edge\n", "Gem::Resolver::Molinillo::DependencyGraph::Vertex\n", "IRuby::Display::Renderer\n", "#\n", "IRuby::Display::Representation\n", "FileUtils::Entry_\n", "#\n", "#\n", "Etc::Group\n", "#\n", "Etc::Passwd\n", "Pry::Command::GemSearch\n", "Pry::History\n", "#\n", "Gem::Source\n", "Pry::Pager::SimplePager\n", "#\n", "Pry::Pager::NullPager\n", "Pry::Pager::StopPaging\n", "Pry::Pager\n", "#\n", "Pry::Terminal\n", "#\n", "CZMQ::FFI::Zarmour::DestroyedError\n", "#\n", "CZMQ::FFI::Zarmour\n", "Pry::Result\n", "CZMQ::FFI::Zuuid::DestroyedError\n", "#\n", "CZMQ::FFI::Zuuid\n", "CZTop::Authenticator\n", "CZMQ::FFI::Zhash::DestroyedError\n", "#\n", "CZMQ::FFI::Zhash\n", "Pry::PluginManager::Plugin\n", "Pry::PluginManager::NoPlugin\n", "Pry::PluginManager\n", "Pry::Command::Bang\n", "Pry::CommandSet\n", "Pry::NoCommandError\n", "CZTop::ZsockOptions::OptionsAccessor\n", "CZMQ::FFI::Zcertstore::DestroyedError\n", "#\n", "CZMQ::FFI::Zcertstore\n", "#\n", "CZMQ::FFI::Zframe::DestroyedError\n", "#\n", "CZMQ::FFI::Zframe\n", "Pry::Command::PryBacktrace\n", "Pry::Command::GemInstall\n", "#\n", "#\n", "Pathname\n", "MethodSource::SourceNotFoundError\n", "#\n", "#\n", "#\n", "Pry::Command::FindMethod\n", "#\n", "Gem::Specification\n", "#\n", "URI::MailTo\n", "#\n", "#>\n", "#\n", "Gem::Resolver::Molinillo::DependencyGraph::DeleteEdge\n", "CZMQ::FFI::Zsock::DestroyedError\n", "#\n", "CZMQ::FFI::Zsock\n", "Pry::Hooks\n", "#\n", "#\n", "IRuby::Kernel\n", "#\n", "FFI::ManagedStruct\n", "#\n", "Monitor\n", "#\n", "#\n", "MonitorMixin::ConditionVariable::Timeout\n", "MonitorMixin::ConditionVariable\n", "#\n", "URI::LDAPS\n", "#\n", "SortedSet\n", "#\n", "URI::LDAP\n", "#\n", "Set\n", "CZMQ::FFI::ZdirPatch::DestroyedError\n", "OpenSSL::Cipher::AES128\n", "Gem::RequestSet::Lockfile::ParseError\n", "#\n", "Gem::RequestSet::Lockfile\n", "#\n", "CZMQ::FFI::ZdirPatch\n", "IRuby::MultiLogger\n", "Gem::Source::Installed\n", "#\n", "Pry::Inspector\n", "OpenSSL::ASN1::GraphicString\n", "OpenSSL::ASN1::IA5String\n", "Logger::LogDevice\n", "#\n", "Logger::Formatter\n", "Logger::ShiftingError\n", "Logger::Error\n", "OpenSSL::ASN1::VideotexString\n", "Logger\n", "OpenSSL::ASN1::T61String\n", "#\n", "OpenSSL::ASN1::PrintableString\n", "Gem::Resolver::Molinillo::PossibilityState\n", "Gem::Resolver::Molinillo::DependencyState\n", "DidYouMean::DeprecatedIgnoredCallers\n", "DidYouMean::PlainFormatter\n", "OpenSSL::OCSP::BasicResponse\n", "Gem::RequestSet::GemDependencyAPI\n", "DidYouMean::NullChecker\n", "DidYouMean::KeyErrorChecker\n", "DidYouMean::MethodNameChecker\n", "Gem::Resolver::VendorSpecification\n", "OpenSSL::X509::ExtensionFactory\n", "OpenSSL::X509::ExtensionError\n", "#>\n", "DidYouMean::VariableNameChecker\n", "Gem::Resolver::InstalledSpecification\n", "DidYouMean::ClassNameChecker::ClassName\n", "DidYouMean::ClassNameChecker\n", "Gem::Resolver::Molinillo::Resolver\n", "SimpleDelegator\n", "Gem::Resolver::APISet\n", "Pry::Indent::UnparseableNestingError\n", "Gem::Resolver::Stats\n", "CZMQ::FFI::Zdir::DestroyedError\n", "#\n", "CZMQ::FFI::Zdir\n", "#\n", "Gem::Resolver\n", "#\n", "#\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Gem::Resolver::Molinillo::DependencyGraph::SetPayload\n", "#\n", "Pry::Indent\n", "Gem::Resolver::ActivationRequest\n", "Gem::Source::SpecificFile\n", "CZMQ::FFI::Zchunk::DestroyedError\n", "#\n", "CZMQ::FFI::Zchunk\n", "Gem::Source::Vendor\n", "Gem::Source::Lock\n", "Gem::Source::Local\n", "#\n", "CZMQ::FFI::Zcert::DestroyedError\n", "#\n", "CZMQ::FFI::Zcert\n", "IRuby::OStream\n", "CZMQ::FFI::Zactor::DestroyedError\n", "#\n", "CZMQ::FFI::Zactor\n", "IRuby::PryBackend\n", "IRuby::PlainBackend\n", "Pry::Command::SaveFile\n", "#\n", "#\n", "FFI::AutoPointer::CallableReleaser\n", "FFI::AutoPointer::DefaultReleaser\n", "FFI::AutoPointer::Releaser\n", "#\n", "FFI::AutoPointer\n", "Tempfile::Remover\n", "#\n", "Tempfile\n", "FFI::StructLayoutBuilder\n", "#>\n", "#\n", "#\n", "Digest::Base\n", "#\n", "Digest::Class\n", "#\n", "FFI::NullPointerError\n", "#\n", "FFI::AbstractMemory\n", "#\n", "FFI::ArrayType\n", "OpenSSL::PKey::DSA\n", "OpenSSL::PKey::DSAError\n", "OpenSSL::PKey::RSA\n", "OpenSSL::PKey::RSAError\n", "#\n", "OpenSSL::PKey::PKey\n", "OpenSSL::PKey::PKeyError\n", "OpenSSL::PKCS7::RecipientInfo\n", "OpenSSL::PKCS7::SignerInfo\n", "OpenSSL::PKCS7::PKCS7Error\n", "OpenSSL::PKCS7\n", "OpenSSL::PKCS12::PKCS12Error\n", "OpenSSL::PKCS12\n", "OpenSSL::Netscape::SPKI\n", "OpenSSL::Netscape::SPKIError\n", "OpenSSL::HMAC\n", "OpenSSL::HMACError\n", "OpenSSL::Digest::DigestError\n", "OpenSSL::SSL::SSLContext\n", "OpenSSL::SSL::Session::SessionError\n", "OpenSSL::SSL::Session\n", "OpenSSL::SSL::SSLErrorWaitWritable\n", "OpenSSL::SSL::SSLErrorWaitReadable\n", "OpenSSL::SSL::SSLError\n", "#\n", "OpenSSL::Random::RandomError\n", "OpenSSL::PKey::EC::Point::Error\n", "OpenSSL::PKey::EC::Group::Error\n", "OpenSSL::PKey::EC::Point\n", "OpenSSL::PKey::EC::Group\n", "OpenSSL::PKey::EC\n", "OpenSSL::PKey::ECError\n", "OpenSSL::X509::CRL\n", "OpenSSL::X509::CRLError\n", "OpenSSL::X509::Certificate\n", "OpenSSL::X509::CertificateError\n", "OpenSSL::X509::Attribute\n", "OpenSSL::X509::AttributeError\n", "OpenSSL::SSL::SSLSocket\n", "OpenSSL::OCSP::Response\n", "OpenSSL::OCSP::Request\n", "OpenSSL::OCSP::OCSPError\n", "Pry::Command::Edit::ExceptionPatcher\n", "OpenSSL::X509::StoreContext\n", "OpenSSL::X509::Store\n", "OpenSSL::X509::StoreError\n", "OpenSSL::X509::Revoked\n", "OpenSSL::X509::RevokedError\n", "OpenSSL::X509::Request\n", "OpenSSL::X509::RequestError\n", "#\n", "#\n", "OpenSSL::X509::Name\n", "OpenSSL::X509::NameError\n", "OpenSSL::X509::Extension\n", "OpenSSL::ASN1::NumericString\n", "OpenSSL::ASN1::UTF8String\n", "OpenSSL::ASN1::OctetString\n", "OpenSSL::ASN1::BitString\n", "OpenSSL::ASN1::Enumerated\n", "OpenSSL::ASN1::Integer\n", "OpenSSL::ASN1::Boolean\n", "OpenSSL::ASN1::Constructive\n", "OpenSSL::ASN1::Primitive\n", "OpenSSL::ASN1::ASN1Data\n", "#\n", "OpenSSL::ASN1::ASN1Error\n", "OpenSSL::Engine::EngineError\n", "OpenSSL::Engine\n", "OpenSSL::OCSP::CertificateId\n", "OpenSSL::OCSP::SingleResponse\n", "#\n", "FFI::Pointer\n", "CZMQ::FFI::Zlistx::DestroyedError\n", "#\n", "CZMQ::FFI::Zlistx\n", "#\n", "FFI::PlatformError\n", "Pry::Output\n", "IRuby::Session\n", "Pry::Command::Gist\n", "FFI::Type::Mapped\n", "FFI::VariadicInvoker\n", "FFI::DynamicLibrary::Symbol\n", "FFI::DynamicLibrary\n", "FFI::StructLayout::CharArray\n", "FFI::Struct::InlineArray\n", "#\n", "FFI::Struct\n", "#\n", "#\n", "#\n", "CZTop::Z85::Padded\n", "Pry::Command::ExitAll\n", "Pry::Command::InstallCommand\n", "#\n", "Pry::Config::Behavior::ReservedKeyError\n", "#\n", "CZMQ::FFI::Zlist::DestroyedError\n", "#\n", "CZMQ::FFI::Zlist\n", "#\n", "FFI::Union\n", "CZMQ::FFI::Ziflist::DestroyedError\n", "#\n", "CZMQ::FFI::Ziflist\n", "FFI::Struct::ManagedStructConverter\n", "FFI::StructLayout::Mapped\n", "FFI::StructLayout::InnerStruct\n", "FFI::StructLayout::Enum\n", "#\n", "#\n", "CZTop::Config::CommentsAccessor\n", "#\n", "Pry::Pager::PageTracker\n", "#\n", "#\n", "Pry::Pager::SystemPager\n", "#\n", "Pry::Command::Whereami\n", "CZMQ::FFI::Zargs::DestroyedError\n", "#\n", "CZMQ::FFI::Zargs\n", "#\n", "CZTop::Frame\n", "#\n", "Pry::Command::Hist\n", "#\n", "Pry::Command::GemCd\n", "#\n", "Pry::WrappedModule::Candidate\n", "#\n", "Pry::WrappedModule\n", "Pry::Command::Nesting\n", "#\n", "#\n", "CodeRay::Encoders::Encoder\n", "CZTop::Actor::DeadActorError\n", "#\n", "CZTop::Actor\n", "CZTop::Beacon\n", "#\n", "Pry::ColorPrinter\n", "Pry::Command::ExitProgram\n", "Pry::HistoryArray\n", "#>\n", "#>\n", "Pry::Command::Cat::FileFormatter\n", "Pry::Command::ChangeInspector\n", "#>\n", "Pry::Command::GemList\n", "Pry::CodeFile\n", "Pry::Code::CodeRange\n", "Pry::Command::Cat::ExceptionFormatter\n", "Pry::Code::LOC\n", "#\n", "Pry::Code\n", "#>\n", "Pry::CLI::NoOptionsError\n", "#\n", "Pry::CLI\n", "Pry::Command::Cat::InputExpressionFormatter\n", "Pry::Command::Cat::AbstractFormatter\n", "Pry::Command::Cat\n", "JSON::MissingUnicodeSupport\n", "JSON::GeneratorError\n", "JSON::CircularDatastructure\n", "JSON::NestingError\n", "JSON::ParserError\n", "#\n", "JSON::JSONError\n", "#\n", "#\n", "JSON::GenericObject\n", "#\n", "OpenStruct\n", "Pry::Command::Ls::LsEntity\n", "Pry::Command::Ls::LocalVars\n", "#\n", "#\n", "PP::SingleLine\n", "#\n", "PP\n", "PrettyPrint::SingleLine\n", "PrettyPrint::GroupQueue\n", "PrettyPrint::Group\n", "PrettyPrint::Breakable\n", "PrettyPrint::Text\n", "#\n", "PrettyPrint\n", "#\n", "Pry::Command::ShowSource\n", "#\n", "Pry::Command::ShowInfo\n", "#\n", "Pry\n", "#\n", "Pry::ObsoleteError\n", "Pry::MethodNotFound\n", "Pry::CommandError\n", "#\n", "#\n", "#\n", "StringScanner::Error\n", "StringScanner\n", "#\n", "#\n", "Bar\n", "Struct::Human\n", "Gem::RequestSet\n", "#\n", "TSort::Cyclic\n", "DidYouMean::SpellChecker\n", "#\n", "#\n", "Gem::Resolver::Conflict\n", "IRuby::Command\n", "#\n", "#\n", "Gem::Resolver::RequirementList\n", "#\n", "MultiJson::ParseError\n", "#\n", "MultiJson::AdapterError\n", "Gem::Resolver::DependencyRequest\n", "Pry::Prompt\n", "#\n", "MultiJson::Version\n", "Pry::Command::ToggleColor\n", "Gem::Resolver::Set\n", "Socket::Ifaddr\n", "#\n", "Addrinfo\n", "Socket::AncillaryData\n", "Socket::Option\n", "UNIXServer\n", "UNIXSocket\n", "UDPSocket\n", "TCPServer\n", "TCPSocket\n", "IPSocket\n", "SocketError\n", "#\n", "Socket\n", "#\n", "BasicSocket\n", "Pry::Command::JumpTo\n", "Pry::Command::AmendLine\n", "#\n", "Pry::Method::WeirdMethodLocator\n", "#>\n", "Pry::Command::WatchExpression::Expression\n", "#\n", "CZTop::Message\n", "#\n", "Pry::Method\n", "#\n", "CZTop::Poller::Event\n", "CZTop::Poller\n", "Pry::Command::WatchExpression\n", "Gem::Resolver::ComposedSet\n", "Gem::Resolver::GitSet\n", "#\n", "Gem::Resolver::CurrentSet\n", "Gem::Resolver::IndexSet\n", "#\n", "IRuby::Comm\n", "#\n", "Gem::Resolver::InstallerSet\n", "CZMQ::FFI::Zdigest::DestroyedError\n", "#\n", "CZMQ::FFI::Zdigest\n", "Pry::Command::Play\n", "Gem::Resolver::SourceSet\n", "Gem::Resolver::VendorSet\n", "Gem::Resolver::LockSpecification\n", "Gem::Resolver::LocalSpecification\n", "#\n", "#\n", "MimeMagic\n", "CZMQ::FFI::Zproc::DestroyedError\n", "#\n", "CZMQ::FFI::Zproc\n", "Pry::Config\n", "#\n", "#\n", "Pry::BasicObject\n", "CZTop::Metadata::InvalidData\n", "#\n", "CZTop::Metadata\n", "CZMQ::FFI::Ztrie::DestroyedError\n", "#\n", "CZMQ::FFI::Ztrie\n", "CZMQ::FFI::Zhashx::DestroyedError\n", "#\n", "CZMQ::FFI::Zhashx\n", "FFI::Bitmask\n", "FFI::Enum\n", "FFI::Enums\n", "Pry::Command::GemOpen\n", "Pry::Command::ShowInput\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "CZTop::Monitor\n", "Pry::Command::Cd\n", "CZMQ::FFI::Zloop::DestroyedError\n", "#\n", "CZMQ::FFI::Zloop\n", "Pry::Editor\n", "#\n", "FFI::NotFoundError\n", "CZMQ::FFI::Ztimerset::DestroyedError\n", "#\n", "CZMQ::FFI::Ztimerset\n", "Pry::Command::Exit\n", "Pry::Command::Help\n", "Pry::ObjectPath\n", "#\n", "FFI::StrPtrConverter\n", "#\n", "#\n", "#\n", "CZMQ::FFI::Zmsg::DestroyedError\n", "#\n", "CZMQ::FFI::Zmsg\n", "OpenSSL::Cipher::CipherError\n", "OpenSSL::Cipher\n", "OpenSSL::BN\n", "OpenSSL::BNError\n", "OpenSSL::OpenSSLError\n", "#\n", "FFI::StructLayout::Array\n", "FFI::StructLayout::Function\n", "FFI::StructLayout::Pointer\n", "FFI::StructLayout::String\n", "FFI::StructLayout::Number\n", "FFI::StructLayout::Field\n", "FFI::StructLayout\n", "FFI::StructByReference\n", "FFI::StructByValue\n", "#\n", "FFI::Buffer\n", "FFI::MemoryPointer\n", "FFI::Function\n", "FFI::FunctionType\n", "Pry::Command::FixIndent\n", "CZTop::Message::FramesAccessor\n", "Pry::Command::ImportSet\n", "Pry::Command::DisablePry\n", "#\n", "CZTop::Poller::Aggregated\n", "#\n", "Pry::CodeObject\n", "#\n", "Pry::Command::ListPrompts\n", "Pry::Command::Reset\n", "Pry::Slop::Option\n", "Pry::Command::Ls::Grep\n", "Pry::Command::Ls\n", "Human\n", "Something\n" ] }, { "data": { "text/plain": [ "1116" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ObjectSpace.each_object(Class) {|c| p c}" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "70364089831080\n" ] }, { "data": { "text/plain": [ "[4, 4, 2, 3]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = [4, 4, 2, 3]\n", "p a.object_id\n", "ObjectSpace._id2ref(a.object_id)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "o = Object.new\n", "ObjectSpace.define_finalizer(o, proc { puts 'finalizing...'})\n", "o = nil\n", "GC.start" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "finalizing...\n" ] } ], "source": [ "ob = Object.new\n", "ObjectSpace.define_finalizer(ob, proc { puts 'finalizing 1...'})\n", "ObjectSpace.define_finalizer(ob, proc { puts 'finalizing 2...'})\n", "ObjectSpace.define_finalizer(ob, proc { raise 'finalizing 1...'})\n", "ob = nil\n", "GC.start" ] } ], "metadata": { "kernelspec": { "display_name": "Ruby 2.5.1", "language": "ruby", "name": "ruby" }, "language_info": { "file_extension": ".rb", "mimetype": "application/x-ruby", "name": "ruby", "version": "2.5.1" } }, "nbformat": 4, "nbformat_minor": 2 }