This is a line taken from the “authentification” recipe in the ‘Rails
Recipes’ book.
I can see that it generates a string of random characters but I am
unsure of all that’s going on here.
The strings that are generated have 8 characters, how come when the
array is initialized with the arg ‘6’ ?
What exactly is .join doing here?
What does .pack(“m”) do?
And why the .chomp? I thought that was a func to remove newline
characters.
To my understanding: creates
Array.new(6){rand(256).chr} => array of 6 random chars
array.join => string of 6 chars
[array.join] => array with 1 string of length 6
newarray.pack(“m”) => encode base64
and the last chomp assures that the last generated char is not a
newline.
hth (even if I am not completely sure about it, and I would like to
hear from more experienced guys).
To my understanding: creates
Array.new(6){rand(256).chr} => array of 6 random chars
array.join => string of 6 chars
[array.join] => array with 1 string of length 6
newarray.pack(“m”) => encode base64
and the last chomp assures that the last generated char is not a
newline.
Close - the pack(‘m’) always pads its result with = if necessary (to
get to a multiple of 4 characters for the encoded string) and adds a
newline. As we start with 6 characters, and base64 encoding turns
three characters into four, we end up with an 8 character string plus
a new line. The chomp deletes that newline.
Close - the pack(‘m’) always pads its result with = if necessary (to
get to a multiple of 4 characters for the encoded string) and adds a
newline. As we start with 6 characters, and base64 encoding turns
three characters into four, we end up with an 8 character string plus
a new line. The chomp deletes that newline.