A biblioteca Base64 embutida no Ruby está adicionando alguns '\ n' s. Não consigo descobrir o motivo. Para este exemplo especial:
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'base64'
=> true
irb(main):003:0> str = "1110--ad6ca0b06e1fbeb7e6518a0418a73a6e04a67054"
=> "1110--ad6ca0b06e1fbeb7e6518a0418a73a6e04a67054"
irb(main):004:0> Base64.encode64(str)
=> "MTExMC0tYWQ2Y2EwYjA2ZTFmYmViN2U2NTE4YTA0MThhNzNhNmUwNGE2NzA1\nNA==\n"
Os \ n estão na última e na sexta posição do final. O decodificador (Base64.decode64) retorna a string antiga perfeitamente. O estranho é que esses \ n não agregam valor à string codificada. Quando removo as novas linhas da string de saída, o decodificador a decodifica novamente perfeitamente.
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
Além disso, usei uma outra biblioteca JS para produzir a saída codificada em base64 da mesma sequência de entrada, a saída vem sem os \ n's.
Isso é um bug ou algo mais? Alguém já enfrentou esse problema antes?
PARA SUA INFORMAÇÃO,
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]