Это либо ошибка, либо неисправность IRb. Хорошо известно, что из-за довольно хакерского способа IRb реализован, он не ведет себя корректно для всех угловых случаев.
Несовместимость вероятно, все знают, что в Ruby, методы, определенные на верхнем уровне стали private
методы экземпляра Object
, тогда как в IRB, они становятся public
методы экземпляра Object
. Еще одна очевидная разница в поведении заключается в том, что в IRb require_relative
не работает, потому что он ищет относительно текущего файла, но в IRb не является текущим файлом.
Есть также некоторые различия в том, какой синтаксис принимается, я считаю, и что-то связанное с локальными переменными и когда они точно определены и не определены.
Таким образом, не исключено, что возможны и некоторые поведенческие различия. Уточнения. Фактически, я сам столкнулся с этим сообщением об ошибке и запустил тот же самый код вне IRb, либо с ruby -e
, либо из файла, либо из другого REPL, который всегда уходил.
Похоже, проблема с версией, я получил '(irb): 2: предупреждение: уточнения являются экспериментальными, и поведение может измениться в будущих версиях Ruby!'. Я использую 'irb 0.9.6 (09/06/30)' и 'ruby20' – hek2mgl
@ hek2mgl Я использую последнюю версию Ruby/IRB. Уточнения больше не являются экспериментальными; этот язык был удален из всех документов. –
Похоже на ошибку в irb для меня. Он отлично работает с подглядыванием. Также сообщение об ошибке не имеет смысла, так как мы вызываем, используя точно на верхнем уровне. – Jesuspc