So I was reviewing some of the basics of ruby to fill in holes in my understanding. Something I liked a ton was the scoping of variables in ruby. There are variable types for 4 scopes:

$globalVar
@@classVar
@instanceVar
localVar

Each is assigned a turf of its own. $globalVars are available to the complete program. This means they can be read and modified anywhere.

@@classVars keeps its domain within classes.

@instanceVars are assigned to instances of a class.

localVars are scoped to a class, method or block depending on where they were defined.

How to access these variables? All but the $globalVars must be accessed via methods created in their home scope and the attribute accessor (attr_accesor).