* Variable with names starting with a lower case letter are local variables
* Names starting with a capital letter are constants - you can set them once each time you run a program and then they are fixed
* Names starting with a single @ character are object variables - in other words, you'll usually create one of each of the @ variables in an object for each object of the class you create. (I say "usually" as Ruby is dynamic and you can add variable to an object long after you have run the constructor if you really want to!)
* Names starting with two @ characters are class variables - so you create just one for the whole class which is shared between all instances.
* Names starting with a $ are global variables which you can refer to anywhere in your code.
You do NOT declare whether a variable is an int, a float or a scaly_anteater in Ruby, as all variables contain objects - and indeed a variable may contain a string at one point in your program, a cube at a later point and can finish up as a puff_of_smoke.
Here's an example piece of code.
@diam = diameter
@colour = colour
@@ndisc += 1
$ticker += 1
tocker = 17
This is a constructor for an object for which who object variables are created - @colour and @diam. There is also a class variable called @@ndisc which is incremented every time this constructor is run, And $ticker is a global variable - it can be reference anywhere else in the code. The bare variables diameter, colour and tocker are local - and the tocker variable appears to be pointless (Ruby won't complain) as it is set then wasted as the method exits.
See a complete example that uses this code here (written 2008-03-21, updated 2008-03-22)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesR110 - Ruby - Special Variables and Pseudo-Variables 
Reading and parsing a JSON object in Ruby - (2015-06-01) 
Ruby - a teaching example showing many of the language features in short but useful program - (2012-06-09) 
Object Oriented Ruby - new examples - (2010-02-03) 
Constants in Ruby - (2010-02-01) 
Variable scope - what is it, and how does it Ruby? - (2009-07-18) 
Ruby to access web services - (2008-11-16) 
Some Ruby programming examples from our course - (2008-03-21) 
Ruby - Totally Topical - (2006-12-16)R119 - Ruby Miscellany 
Ruby Documentation through rdoc - (2012-07-07) 
Load path, load and require in Ruby, and a change from 1.8 to 1.9 - (2012-06-24) 
Loading Ruby classes - where does Ruby look? - (2012-02-24) 
How many days to Christmas? - (2011-09-09) 
Rake - a build system using code written in Ruby - (2011-02-03) 
MySQL database from Ruby - an example - (2008-11-16) 
Ruby mixins, modules, require and include - (2008-11-16) 
Some Ruby lesser used functions - (2008-07-26) 
Good Programming practise - where to initialise variables - (2007-05-09)
Some other Articles
All Change, Portsmouth HarbourDynamic Memory Allocation in C - calloc, reallocString interpretation in RubyVariable types in RubyWell House Consultants / Manor - StaffUsing Structs and Unions together effectively in CBusinesses in West Wiltshire - networkingRuby, C, Java and more - getting out of loopsWhat is an lvalue? (Perl, C)