2015-04-25 9 views
5

Wymaganie "rubygems" daje , ale wymaga "appium_lib" daje true. Np.,Czy `wymagaj 'rubygemów` `zwracających` fałsz` ok?

require 'rubygems' # => false 
require 'appium_lib' # => true 

Czy to jest w porządku? To nie jest tak, jak próbowanie wymagać czegoś, co naprawdę nie istnieje, tj .:

require 'does_not_existxxxxxxx' # => LoadError: cannot load such file -- does_not_existxxxxxxx 
+0

Myślę, że programiści Ruby byłoby niezmiernie wdzięczny, gdyby mógł Pan zgłosić błąd i powiedzieć im, co można znaleźć niejasności [dokumentacja] (http://ruby-doc.org/core-2.2. 2/Kernel.html # method-i-require): "' require (name) '→" true' lub "false': Ładuje podaną' name', zwraca "true", jeśli się powiodło, i 'false', jeśli funkcja jest już załadowany. " –

Odpowiedz

8

Powinno być dobrze. Wymaganie pliku po raz drugi skutkuje fałszywą odpowiedzią. W przypadku load jest to inna rzecz, która byłaby load (require) plikiem za każdym razem, gdy będzie żądana.

Oznacza to po prostu, że irb zaczyna się od rubygems, co jest już wymagane, co nie jest zaskoczeniem.

Na przykład load jest intensywnie wykorzystywany w trybie programowania Railsów, więc Twoje zmiany mogą zostać natychmiast pokazane.

Od Rubin 1.9 rubygems są automatycznie wymagane.

+0

Prawdopodobnie możesz dodać, że 'require 'rubygems' 'było potrzebne w starszych wersjach Ruby, ale nie w nowszych wersjach. – sawa

+0

Tak, i gotowe. Dziękuję za edycję. –

2

Kiedy require klejnot, naprawdę jesteś po prostu umieszczając lib katalogu, który jest klejnotem na Twój $ LOAD_PATH. Jeśli zwróci false, oznacza to, że jest już w twoim $ LOAD_PATH.

Requiring a Gem