all_symbols

Symbol.all_symbolsでRubyのシンボルテーブルにあるシンボルの配列を得ることができます。

p Symbol.all_symbols

疑問:Symbol.all_symbols.sortすると、以下のようなエラーになるのはなぜでしょう?

p Symbol.all_symbols.sort
#=> in `sort': undefined method `<=>' for :public_encrypt:Symbol (NoMethodError)

追記:Ignis Fatuusさんから、Symbol.instance_methods.include?('<=>')がfalseである旨教えていただきました。また、sort_by {|sym| sym.to_s }では、という示唆もいただきました。感謝です♪ ではさっそく。

require 'pp'
pp Symbol.all_symbols.sort_by {|sym| sym.to_s}

実行結果です。途中は略しています。

[:"!",
 :$!,
 :$",
 :$$,
 :$&,
 :$',
 :$*,
 :$+,
 :$,,
 :$-0,
 :$-F,
 :$-I,
 :$-K,
 :$-a,
 :$-d,
 :$-i,
 :$-l,
 :$-p,
 :$-v,
 :$-w,
 :$.,
 :$/,
 :$0,
 :$:,
 :$;,
 :$<,
 :$=,
 :$>,
 :$?,
 :$@,
 :$DEBUG,
 :$FILENAME,
 :$KCODE,
(中略)
 :warn,
 :warn_deprecated,
 :wday,
 :width,
 :wnum0,
 :wnum1,
 :writable?,
 :writable_real?,
 :write,
 :write_random_file,
 :write_smime,
 :x,
 :xmlschema,
 :y,
 :yday,
 :year,
 :zero?,
 :zip,
 :zone,
 :zone_offset,
 :zone_to_diff,
 :zone_utc?,
 :|,
 :~]