Understanding Variable Naming in Ruby

I'm trying to better understand how variables are named in Ruby... here's what I think I understand. Please correct me where I misunderstand:

#Globals are defined outside a class/method and are
#available everywhere. Must starts with '$'
$global_variable

#Class names must start with capitalized letter.
class Class_name

     #Starts with '@@' and is available to all methods in the class.
     @@class_variable

     #Method name must start with lowercase letter or '_'
     def method_name

         #Must start with '@' similar to Python's self notation.
         #This variable is local to the method.
         @method_variable

     end
end

Where do constants and local variables fit into this?

Thanks,
Brad

Brad wrote:

Where do constants and local variables fit into this?

Constants typically are in all upper case characters. Then local
variables don't start with a leading @@, @, or $. Something like
thisLocalVar or this_local_var depending on your background :slight_smile:

Here is a nonsensical class that uses class, instance, and local
variables. I don't think creating my own class variable accessors is
Rubyish, but I just threw it in there for kicks.

class Foo
  attr_accessor :instVar, :localVar
  @@classVar="class variable"
  localVar="local variable"

  def initialize
    super
    @instVar="instance variable"
  end

  def self.classVar
    return @@classVar
  end

  def self.classVar=other
    @@classVar=other
    return @@classVar
  end

  def localVarCheck
    begin
      print "#{self}'s local variable is #{localVar}.\n"
    rescue NameError => e
      print "#{self}'s local variable doesn't exist! The specific error
is:\n#{e}.\n"
    end
  end

end

print "Foo's classVar is set to #{Foo.classVar}.\n"
print "Foo's classVar is now changed to #{Foo.classVar="new class
variable"}.\n"
foo=Foo.new
print "foo's instVar is set to #{foo.instVar}.\n"
print "foo's instVar is now changed to #{foo.instVar="new instance
variable"}.\n"
foo.localVarCheck