To błąd lub pomyłka IRb. Powszechnie wiadomo, że ze względu na dość hackowską metodę IRb jest zaimplementowana, nie zachowuje się poprawnie we wszystkich przypadkach narożnych.
Niezgodność prawdopodobnie wiadomo jest, że w Ruby metod zdefiniowanych w górnym poziomie się private
metody instancja Object
, natomiast w IRB stają public
metody instancja Object
. Inną oczywistą różnicą w zachowaniu jest to, że w IRb, require_relative
nie działa, ponieważ szuka w odniesieniu do bieżącego pliku, ale w IRb, tam nie jest bieżącym plikiem.
Istnieją również pewne różnice w zakresie składni, która jest akceptowana, jak sądzę, i ma coś wspólnego ze zmiennymi lokalnymi, a kiedy dokładnie są i nie są zdefiniowane.
Tak więc nie jest wykluczone, że mogą również występować pewne różnice w zachowaniu. Udoskonalenia. Faktycznie, sam napotkałem ten komunikat o błędzie i uruchomiłem dokładnie ten sam kod poza IRb, albo z ruby -e
, z pliku, albo z innego REPL, zawsze powodowało, że odszedł.
Wygląda na problem z wersją, mam '(irb): 2: warning: Udoskonalenia są eksperymentalne, a zachowanie może się zmienić w przyszłych wersjach Ruby!'. Używam 'irb 0.9.6 (09/06/30)' i 'ruby20' – hek2mgl
@ hek2mgl Używam najnowszej wersji Ruby/IRB. Udoskonalenia nie są już eksperymentalne; ten język został usunięty ze wszystkich dokumentów. –
Wygląda mi na błąd w irb. Działa dobrze z podstępem. Również komunikat o błędzie nie ma sensu, ponieważ dzwonimy używając dokładnie na najwyższym poziomie. – Jesuspc