Да, версия для Ruby - это разница. String#to_date
вызывает Date._parse
внутри, и это дает разные результаты для Ruby 1.8.6 и 1.8.7.
1.8.7:
require "date"
Date._parse("10.06.2008")
#=> {:year=>2008, :mday=>10, :mon=>6}
1.8.6:
Date._parse("10.06.2008")
#=> {:mday=>6, :mon=>10, :year=>2008}
В журнале изменений для 1.8.7 упоминается изменение способа анализа дат:
Date.parse: '##. ##. ##' (где каждое «#» - это цифра) теперь воспринимается как «YY.MM.DD»
вместо «MM.DD.YY». Хотя изменения могут вас запутать, вы можете
всегда используйте Date.strptime (), когда вы знаете, что имеете дело
с.
Несмотря на то, что четырехзначная версия из вашего примера явно не упоминается, это же изменение, вероятно, вызывает разницу. Обходной путь должен был бы использовать Date.strptime
.