本を読む

読書やコンピュータなどに関するメモ

Rubyで定義されているクラスをリストアップする方法

 Yokohama.rb #0に行ってきました。みなさんありがとうございました。

 で、懇親会で話してて教わったネタ。

$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]
$ ruby -e 'p ObjectSpace.each_object.map(&:class).uniq'
[Array, Proc, RubyVM::Env, Enumerator, String, RubyVM::InstructionSequence, Module, LoadError, Regexp, Hash, Mutex, Encoding, Complex, Class, ThreadGroup, Binding, Thread, RubyVM, NoMemoryError, Float, SystemStackError, Bignum, ARGF.class, IO, Data, Object, fatal]

 Integerとかが入ってないけど、まぁいいや。

追記2010.09.19

 いや、こっちのほうが適切だな。

$ ruby -e 'p ObjectSpace.each_object.find_all {|o| Class === o }'
[Complex, Rational, FiberError, Fiber, ThreadError, Mutex, ThreadGroup, RubyVM::InstructionSequence, Thread, RubyVM::Env, RubyVM, Enumerator::Yielder, Enumerator::Generator, StopIteration, Enumerator, Math::DomainError, Binding, UnboundMethod, Method, SystemStackError, LocalJumpError, Proc, Struct::Tms, Process::Status, Random, Time, Dir, File::Stat, File, ARGF.class, IO, EOFError, IOError, Range, Encoding::Converter, Encoding::ConverterNotFoundError, Encoding::InvalidByteSequenceError, Encoding::UndefinedConversionError, MatchData, Regexp, RegexpError, Struct, Hash, Array, Errno::ERFKILL, Errno::EOWNERDEAD, Errno::ENOTRECOVERABLE, Errno::ENOMEDIUM, Errno::ENOKEY, Errno::EMEDIUMTYPE, Errno::EKEYREVOKED, Errno::EKEYREJECTED, Errno::EKEYEXPIRED, Errno::ECANCELED, Errno::EDQUOT, Errno::EREMOTEIO, Errno::EISNAM, Errno::ENAVAIL, Errno::ENOTNAM, Errno::EUCLEAN, Errno::ESTALE, Errno::EINPROGRESS, Errno::EALREADY, Errno::EHOSTUNREACH, Errno::EHOSTDOWN, Errno::ECONNREFUSED, Errno::ETIMEDOUT, Errno::ETOOMANYREFS, Errno::ESHUTDOWN, Errno::ENOTCONN, Errno::EISCONN, Errno::ENOBUFS, Errno::ECONNRESET, Errno::ECONNABORTED, Errno::ENETRESET, Errno::ENETUNREACH, Errno::ENETDOWN, Errno::EADDRNOTAVAIL, Errno::EADDRINUSE, Errno::EAFNOSUPPORT, Errno::EPFNOSUPPORT, Errno::EOPNOTSUPP, Errno::ESOCKTNOSUPPORT, Errno::EPROTONOSUPPORT, Errno::ENOPROTOOPT, Errno::EPROTOTYPE, Errno::EMSGSIZE, Errno::EDESTADDRREQ, Errno::ENOTSOCK, Errno::EUSERS, Errno::ESTRPIPE, Errno::ERESTART, Errno::EILSEQ, Errno::ELIBEXEC, Errno::ELIBMAX, Errno::ELIBSCN, Errno::ELIBBAD, Errno::ELIBACC, Errno::EREMCHG, Errno::EBADFD, Errno::ENOTUNIQ, Errno::EOVERFLOW, Errno::EBADMSG, Errno::EDOTDOT, Errno::EMULTIHOP, Errno::EPROTO, Errno::ECOMM, Errno::ESRMNT, Errno::EADV, Errno::ENOLINK, Errno::EREMOTE, Errno::ENOPKG, Errno::ENONET, Errno::ENOSR, Errno::ETIME, Errno::ENODATA, Errno::ENOSTR, Errno::EBFONT, Errno::EBADSLT, Errno::EBADRQC, Errno::ENOANO, Errno::EXFULL, Errno::EBADR, Errno::EBADE, Errno::EL2HLT, Errno::ENOCSI, Errno::EUNATCH, Errno::ELNRNG, Errno::EL3RST, Errno::EL3HLT, Errno::EL2NSYNC, Errno::ECHRNG, Errno::EIDRM, Errno::ENOMSG, Errno::ELOOP, Errno::ENOTEMPTY, Errno::ENOSYS, Errno::ENOLCK, Errno::ENAMETOOLONG, Errno::EDEADLK, Errno::ERANGE, Errno::EDOM, Errno::EPIPE, Errno::EMLINK, Errno::EROFS, Errno::ESPIPE, Errno::ENOSPC, Errno::EFBIG, Errno::ETXTBSY, Errno::ENOTTY, Errno::EMFILE, Errno::ENFILE, Errno::EINVAL, Errno::EISDIR, Errno::ENOTDIR, Errno::ENODEV, Errno::EXDEV, Errno::EEXIST, Errno::EBUSY, Errno::ENOTBLK, Errno::EFAULT, Errno::EACCES, Errno::ENOMEM, Errno::EAGAIN, Errno::ECHILD, Errno::EBADF, Errno::ENOEXEC, Errno::E2BIG, Errno::ENXIO, Errno::EIO, Errno::EINTR, Errno::ESRCH, Errno::ENOENT, Errno::EPERM, Errno::NOERROR, Bignum, Float, Fixnum, Integer, Numeric, FloatDomainError, ZeroDivisionError, SystemCallError, Encoding::CompatibilityError, EncodingError, NoMemoryError, SecurityError, RuntimeError, NoMethodError, NameError::message, NameError, NotImplementedError, LoadError, SyntaxError, ScriptError, RangeError, KeyError, IndexError, ArgumentError, TypeError, StandardError, Interrupt, SignalException, fatal, SystemExit, Exception, Symbol, String, Encoding, FalseClass, TrueClass, Data, NilClass, Class, Module, Object, BasicObject]

追記2010.09.20

 コメントでYuguiさんに教えていただきました! 感謝! これで決定かな。

$ ruby -e 'p ObjectSpace.each_object(Class).to_a'
[Complex, Rational, FiberError, Fiber, ThreadError, Mutex, ThreadGroup, RubyVM::InstructionSequence, Thread, RubyVM::Env, RubyVM, Enumerator::Yielder, Enumerator::Generator, StopIteration, Enumerator, Math::DomainError, Binding, UnboundMethod, Method, SystemStackError, LocalJumpError, Proc, Struct::Tms, Process::Status, Random, Time, Dir, File::Stat, File, ARGF.class, IO, EOFError, IOError, Range, Encoding::Converter, Encoding::ConverterNotFoundError, Encoding::InvalidByteSequenceError, Encoding::UndefinedConversionError, MatchData, Regexp, RegexpError, Struct, Hash, Array, Errno::ERFKILL, Errno::EOWNERDEAD, Errno::ENOTRECOVERABLE, Errno::ENOMEDIUM, Errno::ENOKEY, Errno::EMEDIUMTYPE, Errno::EKEYREVOKED, Errno::EKEYREJECTED, Errno::EKEYEXPIRED, Errno::ECANCELED, Errno::EDQUOT, Errno::EREMOTEIO, Errno::EISNAM, Errno::ENAVAIL, Errno::ENOTNAM, Errno::EUCLEAN, Errno::ESTALE, Errno::EINPROGRESS, Errno::EALREADY, Errno::EHOSTUNREACH, Errno::EHOSTDOWN, Errno::ECONNREFUSED, Errno::ETIMEDOUT, Errno::ETOOMANYREFS, Errno::ESHUTDOWN, Errno::ENOTCONN, Errno::EISCONN, Errno::ENOBUFS, Errno::ECONNRESET, Errno::ECONNABORTED, Errno::ENETRESET, Errno::ENETUNREACH, Errno::ENETDOWN, Errno::EADDRNOTAVAIL, Errno::EADDRINUSE, Errno::EAFNOSUPPORT, Errno::EPFNOSUPPORT, Errno::EOPNOTSUPP, Errno::ESOCKTNOSUPPORT, Errno::EPROTONOSUPPORT, Errno::ENOPROTOOPT, Errno::EPROTOTYPE, Errno::EMSGSIZE, Errno::EDESTADDRREQ, Errno::ENOTSOCK, Errno::EUSERS, Errno::ESTRPIPE, Errno::ERESTART, Errno::EILSEQ, Errno::ELIBEXEC, Errno::ELIBMAX, Errno::ELIBSCN, Errno::ELIBBAD, Errno::ELIBACC, Errno::EREMCHG, Errno::EBADFD, Errno::ENOTUNIQ, Errno::EOVERFLOW, Errno::EBADMSG, Errno::EDOTDOT, Errno::EMULTIHOP, Errno::EPROTO, Errno::ECOMM, Errno::ESRMNT, Errno::EADV, Errno::ENOLINK, Errno::EREMOTE, Errno::ENOPKG, Errno::ENONET, Errno::ENOSR, Errno::ETIME, Errno::ENODATA, Errno::ENOSTR, Errno::EBFONT, Errno::EBADSLT, Errno::EBADRQC, Errno::ENOANO, Errno::EXFULL, Errno::EBADR, Errno::EBADE, Errno::EL2HLT, Errno::ENOCSI, Errno::EUNATCH, Errno::ELNRNG, Errno::EL3RST, Errno::EL3HLT, Errno::EL2NSYNC, Errno::ECHRNG, Errno::EIDRM, Errno::ENOMSG, Errno::ELOOP, Errno::ENOTEMPTY, Errno::ENOSYS, Errno::ENOLCK, Errno::ENAMETOOLONG, Errno::EDEADLK, Errno::ERANGE, Errno::EDOM, Errno::EPIPE, Errno::EMLINK, Errno::EROFS, Errno::ESPIPE, Errno::ENOSPC, Errno::EFBIG, Errno::ETXTBSY, Errno::ENOTTY, Errno::EMFILE, Errno::ENFILE, Errno::EINVAL, Errno::EISDIR, Errno::ENOTDIR, Errno::ENODEV, Errno::EXDEV, Errno::EEXIST, Errno::EBUSY, Errno::ENOTBLK, Errno::EFAULT, Errno::EACCES, Errno::ENOMEM, Errno::EAGAIN, Errno::ECHILD, Errno::EBADF, Errno::ENOEXEC, Errno::E2BIG, Errno::ENXIO, Errno::EIO, Errno::EINTR, Errno::ESRCH, Errno::ENOENT, Errno::EPERM, Errno::NOERROR, Bignum, Float, Fixnum, Integer, Numeric, FloatDomainError, ZeroDivisionError, SystemCallError, Encoding::CompatibilityError, EncodingError, NoMemoryError, SecurityError, RuntimeError, NoMethodError, NameError::message, NameError, NotImplementedError, LoadError, SyntaxError, ScriptError, RangeError, KeyError, IndexError, ArgumentError, TypeError, StandardError, Interrupt, SignalException, fatal, SystemExit, Exception, Symbol, String, Encoding, FalseClass, TrueClass, Data, NilClass, Class, Module, Object, BasicObject]

コメント

いや、そこは

いや、そこは
ruby -e 'p ObjectSpace.each_object(Class).to_a'
でしょう。

Re: いや、そこは

おお、each_objectの引数でクラスかモジュールを指定できたんですね。ありがとうございました。

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/811-8ddb76bc

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad