Random Thoughts by Fabien Penso

Ruby et Date

Sur une machine Debian Etch :

~$ ruby --version ruby 1.8.5 (2006-08-25) [i486-linux]
~$ ruby -rdate -e "p Date.parse('Sin Aba 15 17:13:48 CEST 2008').month" /usr/lib/ruby/1.8/date.rb:650:in `new_with_hash': 3 elements of civil date are necessary (ArgumentError)

Sur une Ubuntu :

~$ ruby --version ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux] ~$ ruby -rdate -e "p Date.parse('Sin Aba 15 17:13:48 CEST 2008').month" 5

Conclusion, Debian en plus d’avoir des bugs dans SSL se contente d’un Ruby 1.8.5 antédiluvien et qui ne sait pas lire les dates à un format étranger, sauf si les locales sont positionnées, chose qu’on ne peut pas faire en Ruby. ruby-locale trouvé sur Internet et publié au siècle dernier me donne :

irb(main):003:0> Locale.setlocale(Locale::LC_ALL, "fr_FR.UTF-8") SystemCallError: unknown error - call to setlocale failed for args (6, fr_FR.UTF-8)

Alors que la locale est installée sur le serveur. Ruby 1.8.6 n’est pas disponible dans les backports. 2h de perdu pour comprendre d’où venait ce bug… Et il m’en faudra une de plus pour compiler Ruby sur le serveur.