Just a reminder, there's a minor insignificant difference between the real enigma machine, and this one. The real enigma machine, when shuffling a letter, would ALWAYS change the letter. However, the ruby .shuffle leaves for the possibility that the letter order will leave a letter in the same position it was in before.
It's an incredibly minor implementation detail, but details matter :).
http://reddit.com/r/compsci/comments/2zvt26/the_math_behind_an_enigma_machine/cpmxxis