Сегодня тестировал свою программу под оффтопиком.
Выяснилась паршивая вещь, а именно: кириллица в путях не поддерживается (версия ruby 1.8.x). Пришлось писать конвертор кодировки. После чего файлы из подкаталогов типа File.join(root_dir, 'base', 'clients.sqlite') стали нормально открываться, но перестали корректно работать штатные функции типа «File.exists?(path)» и «File.directory?(path)»
В итоге прихожу к выводу, что под мастдаем придется корневой путь задавать в виде точки (".") и следить чтобы текущий каталог не «уходил» во время обращения к подкаталогам внутри программы.
Понимаю что проблема немного офтопная, но все же приходится заботиться обо всех хомячках, а не только о линуксоидах, так пытаюсь написать действительно кроссплатформенное решение.
Вопросы такие:
1) как «бороться» с русской кодировкой в мастдае?
2) эта проблема только в winxp, или в win7 тоже не UTF-8?
3) эта проблема только ruby 1.8.x, или в 1.9.x тоже?
Ниже вариант обсуждаемого кода:
def os_family
case
when /ix/i, /ux/i, /gnu/i, /sysv/i, /solaris/i, /sunos/i, /bsd/i
"unix"
when /win/i, /ming/i
"windows"
else
"other"
end
end
root_dir = Dir.pwd
if os_family == 'windows'
begin
require 'iconv'
converter = Iconv.new('UTF-8', 'WINDOWS-1251')
root_dir = converter.iconv(root_dir)
rescue Exception
root_dir = '.'
end
end