Ruby で定義済の定数を確認する。
クラス定義の外(トッ プレベル)で定義された定数は Object に所属することになります。
Object.constants
ということになる。
たとえば、RUBY_XXXXを見つけるには
>> Object.constants.grep(/ruby/i) [ [ 0] :RubyVM, [ 1] :RUBY_VERSION, [ 2] :RUBY_RELEASE_DATE, [ 3] :RUBY_PLATFORM, [ 4] :RUBY_PATCHLEVEL, [ 5] :RUBY_REVISION, [ 6] :RUBY_DESCRIPTION, [ 7] :RUBY_COPYRIGHT, [ 8] :RUBY_ENGINE, [ 9] :RubyToken, [10] :RubyLex, [11] :RUBYGEMS_ACTIVATION_MONITOR ] >>
などとなる。
ちょっと困ったことに、requireしたモジュールも定数なので・・・たくさんありますね。
>> Object.constants [ [ 0] :Object, [ 1] :Module, [ 2] :Class, [ 3] :BasicObject, [ 4] :Kernel, [ 5] :NilClass, [ 6] :NIL, [ 7] :Data, [ 8] :TrueClass, [ 9] :TRUE, [ 10] :FalseClass, [ 11] :FALSE, [ 12] :Encoding, [ 13] :Comparable, [ 14] :Enumerable, [ 15] :String, [ 16] :Symbol, [ 17] :Exception, [ 18] :SystemExit, [ 19] :SignalException, [ 20] :Interrupt, [ 21] :StandardError, [ 22] :TypeError, [ 23] :ArgumentError, [ 24] :IndexError, [ 25] :KeyError, [ 26] :RangeError, [ 27] :ScriptError, [ 28] :SyntaxError, [ 29] :LoadError, [ 30] :NotImplementedError, [ 31] :NameError, [ 32] :NoMethodError, [ 33] :RuntimeError, [ 34] :SecurityError, [ 35] :NoMemoryError, [ 36] :EncodingError, [ 37] :SystemCallError, [ 38] :Errno, [ 39] :ZeroDivisionError, [ 40] :FloatDomainError, [ 41] :Numeric, [ 42] :Integer, [ 43] :Fixnum, [ 44] :Float, [ 45] :Bignum, [ 46] :Array, [ 47] :Hash, [ 48] :ENV, [ 49] :Struct, [ 50] :RegexpError, [ 51] :Regexp, [ 52] :MatchData, [ 53] :Marshal, [ 54] :Range, [ 55] :IOError, [ 56] :EOFError, [ 57] :IO, [ 58] :STDIN, [ 59] :STDOUT, [ 60] :STDERR, [ 61] :ARGF, [ 62] :FileTest, [ 63] :File, [ 64] :Dir, [ 65] :Time, [ 66] :Random, [ 67] :Signal, [ 68] :Process, [ 69] :Proc, [ 70] :LocalJumpError, [ 71] :SystemStackError, [ 72] :Method, [ 73] :UnboundMethod, [ 74] :Binding, [ 75] :Math, [ 76] :GC, [ 77] :ObjectSpace, [ 78] :Enumerator, [ 79] :StopIteration, [ 80] :RubyVM, [ 81] :Thread, [ 82] :TOPLEVEL_BINDING, [ 83] :ThreadGroup, [ 84] :Mutex, [ 85] :ThreadError, [ 86] :Fiber, [ 87] :FiberError, [ 88] :Rational, [ 89] :Complex, [ 90] :RUBY_VERSION, [ 91] :RUBY_RELEASE_DATE, [ 92] :RUBY_PLATFORM, [ 93] :RUBY_PATCHLEVEL, [ 94] :RUBY_REVISION, [ 95] :RUBY_DESCRIPTION, [ 96] :RUBY_COPYRIGHT, [ 97] :RUBY_ENGINE, [ 98] :TracePoint, [ 99] :ARGV, [100] :Gem, [101] :RbConfig, [102] :Config, [103] :CROSS_COMPILING, [104] :ConditionVariable, [105] :Queue, [106] :SizedQueue, [107] :MonitorMixin, [108] :Monitor, [109] :PrettyPrint, [110] :PP, [111] :Pry, [112] :Forwardable, [113] :SingleForwardable, [114] :MethodSource, [115] :Shellwords, [116] :StringIO, [117] :CodeRay, [118] :Slop, [119] :Delegator, [120] :SimpleDelegator, [121] :FileUtils, [122] :Etc, [123] :Tempfile, [124] :Pathname, [125] :PryDebugger, [126] :Debugger, [127] :BasicSocket, [128] :Socket, [129] :SocketError, [130] :IPSocket, [131] :TCPSocket, [132] :TCPServer, [133] :UDPSocket, [134] :UNIXSocket, [135] :UNIXServer, [136] :Addrinfo, [137] :SCRIPT_LINES__, [138] :Digest, [139] :Set, [140] :SortedSet, [141] :TraceLineNumbers, [142] :LineCache, [143] :Readline, [144] :Columnize, [145] :Exception2MessageMapper, [146] :IRB, [147] :RubyToken, [148] :RubyLex, [149] :Psych, [150] :StringScanner, [151] :ScanError, [152] :Date, [153] :DateTime, [154] :YAML, [155] :Printers, [156] :MIME, [157] :JSON, [158] :OpenStruct, [159] :Mutex_m, [160] :CGI, [161] :Timeout, [162] :TimeoutError, [163] :Net, [164] :URI, [165] :Zlib, [166] :OpenSSL, [167] :Fcntl, [168] :SecureRandom, [169] :Nokogiri, [170] :Racc, [171] :ParseError, [172] :WEBrick, [173] :Mechanize, [174] :HTTP, [175] :DomainName, [176] :UNF, [177] :IPAddr, [178] :Base64, [179] :NKF, [180] :Kconv, [181] :Webrobots, [182] :WebRobots, [183] :DRb, [184] :DRbObject, [185] :DRbUndumped, [186] :DRbIdConv, [187] :AwesomePrint, [188] :RUBYGEMS_ACTIVATION_MONITOR ]