Ruby variables are not strongly typed and can hold any value. There are six variable types: global, class, instance, local, constant, and pseudo-variables. Variable scope in Ruby is denoted by sigils - $ for global variables, @@ for class variables, @ for instance variables, and no sigil for local variables. Constants must begin with a capital letter. Global variables are accessible anywhere but discouraged, class variables are shared among class instances, and instance variables are unique to each object. Local and constant variables have limited scope.