До этого как-то не приходилось с этим сталкиваться…
Оказывается чтобы операции со строками содержащими русские символы заработали так как нужно вам, сначала надо преобразовать строку в символы. Делается это с помощью метода chars который входит в состав Active Support (и который по умолчанию используется в Rails):
# Говорим Ruby что будем работать
# с UTF-8 (в Rails применяется по умолчанию)
$KCODE = "UTF8"
# Подгружаем Active Support (в Rails подключается по умолчанию)
require "rubygems"
require "active_support"
s = "привет"
puts s
puts s.upcase
puts s.chars.upcase
Результат:
привет
привет
ПРИВЕТ
Спасибо за подсказку.
Но у меня почему-то не срабатывает...
Выдает следующую ошибку: "/home/sashker/NetBeansProjects/test/lib/test.rb:22: undefined method `upcase' for #<Enumerable::Enumerator:0xb79310b8> (NoMethodError)"
Это я пробую в Ruby 1.8.7
Active_support поставил через GEM
С выходом версии 2.2.1 ActiveSupport её разработчики несколько изменили эту функциональность. Теперь вместо свойства chars надо обращаться к mb_chars. Подробности такого перехода можно найти в интернете, например здесь.