Ruby Hash.has_key?возвращая false для первого ключа в Windows - PullRequest
1 голос
/ 29 сентября 2011

У меня странная проблема с хешами Ruby на окнах. Я загружаю следующий файл YAML и анализирую его как хеш:

tasks:
  - clone_skeleton, <skeleton_path>
  - summit_capify, <skeleton_path>

Я использую YAML.load () для загрузки файла в хеш. Если я распечатываю hash.keys, задачи указываются в качестве ключа, но если я делаю hash.has_key? ("Tasks"), я получаю false. Однако, если я изменю yaml на это

directory_structure: 
tasks:
  - clone_skeleton, <skeleton_path>
  - summit_capify, <skeleton_path>

hash.has_key? ("Tasks") возвращает значение true, но hash.has_key? ("Directory_structure") возвращает значение false. Я не тестировал в Linux, но у меня, похоже, нет этой проблемы на OS X, только на Windows. Я использую Ruby 1.9.2 и протестировал в Cygwin и использую стандартную командную строку.

Я не знаю, это ошибка в рубине, проблема с моим YAML или что-то еще. Есть идеи?

ОБНОВЛЕНИЕ: Похоже, это исправлено в Ruby 1.9.3

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Возможно ли, что ключи являются символами, а не строками?Попытка has_key?(:tasks).

0 голосов
/ 02 ноября 2011

Всякий раз, когда вы отлаживаете, не выполняйте puts hash.keys, а выполняйте puts hash.keys.inspect - последнее точно указывает, что происходит.

Или вы можете сделать puts hash.inspect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...