Symbol objects represent named identifiers inside the Ruby interpreter.

You can create a Symbol object explicitly with:

The same Symbol object will be created for a given name or string for the duration of a program's execution, regardless of the context or meaning of that name. Thus if Fred is a constant in one context, a method in another, and a class in a third, the Symbol :Fred will be the same object in all three contexts.

module One
  class Fred
  $f1 = :Fred
module Two
  Fred = 1
  $f2 = :Fred
def Fred()
$f3 = :Fred
$f1.object_id   #=> 2514190
$f2.object_id   #=> 2514190
$f3.object_id   #=> 2514190

Constant, method, and variable names are returned as symbols:

module One
  Two = 2
  def three; 3 end
  @four = 4
  @@five = 5
  $six = 6
seven = 7

# => [:Two]
# => [:three]
# => [:@four]
# => [:@@five]
# => [:$six]
# => [:seven]

Symbol objects are different from String objects in that Symbol objects represent identifiers, while String objects represent text or data.

Class Methods

Returns an array of all the symbols currently in Ruby's symbol table.

Symbol.all_symbols.size    #=> 903
Symbol.all_symbols[1,20]   #=> [:floor, :ARGV, :Binding, :symlink,
                                :chown, :EOFError, :$;, :String,
                                :LOCK_SH, :"setuid?", :$<,
                                :default_proc, :compact, :extend,
                                :Tms, :getwd, :$=, :ThreadGroup,
                                :wait2, :$>]

Deserializes JSON string by converting the string value stored in the object to a Symbol

Instance Methods

Compares symbol with other_symbol after calling to_s on each of the symbols. Returns -1, 0, +1, or nil depending on whether symbol is less than, equal to, or greater than other_symbol.

nil is returned if the two values are incomparable.

See String#<=> for more information.

Equality—If sym and obj are exactly the same symbol, returns true.

An alias for ==

Returns sym.to_s =~ obj.

Returns sym.to_s[].

Returns a hash, that will be turned into a JSON object and represent this object.

Same as sym.to_s.capitalize.intern.

Case-insensitive version of Symbol#<=>. Currently, case-insensitivity only works on characters A-Z/a-z, not all of Unicode. This is different from Symbol#casecmp?.

:aBcDeF.casecmp(:abcde)     #=> 1
:aBcDeF.casecmp(:abcdef)    #=> 0
:aBcDeF.casecmp(:abcdefg)   #=> -1
:abcdef.casecmp(:ABCDEF)    #=> 0

nil is returned if the two symbols have incompatible encodings, or if other_symbol is not a symbol.

:foo.casecmp(2)   #=> nil
"\u{e4 f6 fc}".encode("ISO-8859-1").to_sym.casecmp(:"\u{c4 d6 dc}")   #=> nil

Returns true if sym and other_symbol are equal after Unicode case folding, false if they are not equal.

:aBcDeF.casecmp?(:abcde)     #=> false
:aBcDeF.casecmp?(:abcdef)    #=> true
:aBcDeF.casecmp?(:abcdefg)   #=> false
:abcdef.casecmp?(:ABCDEF)    #=> true
:"\u{e4 f6 fc}".casecmp?(:"\u{c4 d6 dc}")   #=> true

nil is returned if the two symbols have incompatible encodings, or if other_symbol is not a symbol.

:foo.casecmp?(2)   #=> nil
"\u{e4 f6 fc}".encode("ISO-8859-1").to_sym.casecmp?(:"\u{c4 d6 dc}")   #=> nil

Same as sym.to_s.downcase.intern.

Returns whether sym is :“” or not.

Returns the Encoding object that represents the encoding of sym.

Returns true if sym ends with one of the suffixes given.

:hello.end_with?("ello")               #=> true

# returns true if one of the +suffixes+ matches.
:hello.end_with?("heaven", "ello")     #=> true
:hello.end_with?("heaven", "paradise") #=> false

Returns the representation of sym as a symbol literal.

:fred.inspect   #=> ":fred"

In general, to_sym returns the Symbol corresponding to an object. As sym is already a symbol, self is returned in this case.

Same as sym.to_s.length.

Returns sym.to_s.match.

Returns sym.to_s.match?.

Returns the name or string corresponding to sym. Unlike to_s, the returned string is frozen.         #=> "fred" #=> true
:fred.to_s         #=> "fred"
:fred.to_s.frozen? #=> false
An alias for succ

Returns true if sym starts with one of the prefixes given. Each of the prefixes should be a String or a Regexp.

:hello.start_with?("hell")               #=> true
:hello.start_with?(/H/i)                 #=> true

# returns true if one of the prefixes matches.
:hello.start_with?("heaven", "hell")     #=> true
:hello.start_with?("heaven", "paradise") #=> false

Same as sym.to_s.succ.intern.

Same as sym.to_s.swapcase.intern.

Stores class name (Symbol) with String representation of Symbol as a JSON string.

Returns a Proc object which responds to the given method by sym.

(1..3).collect(&:to_s)  #=> ["1", "2", "3"]

Returns the name or string corresponding to sym.

:fred.id2name   #=> "fred"
:ginger.to_s    #=> "ginger"

Note that this string is not frozen (unlike the symbol itself). To get a frozen string, use name.

Same as sym.to_s.upcase.intern.