2011-12-03 9 views
25

Po prostu chciałem zrozumieć dla siebie.Różnica między klejnotem a wymaganiem (wymagać otwarcia-uri)

Używam klejnotu nokogiri (do parsowania HTML). Jeśli mam prawo do otwierania adresów URL, muszę użyć metody z gem 'open-uri'.

Ale kiedy to w moim Gemfile (na komputerze z systemem Windows dewelopera):

gem 'open-uri' - wystąpił błąd podczas pakiet zainstalować, że nie może znaleźć skarb.

Więc jeśli używam require 'open-uri' - jego działanie.

Czy można wyjaśnić, co się dzieje?

Odpowiedz

49

Używasz bundler dla swoich zależności od gemów i robisz to dobrze, ale OpenUri jest częścią standardowej biblioteki Ruby. To dlatego musisz go wymagać, jeśli chcesz go użyć w swoim kodzie.

+0

Dzięki. Gdzie najlepiej jest wpisać "open-uri" w gemfile lub gdzieś indziej? – WHITECOLOR

+2

Generalnie powinieneś go potrzebować na górze pliku, w którym zamierzasz korzystać z biblioteki. Proszę przyjąć odpowiedź, jeśli ci to pomogło. – lucapette

+1

Dziękuję bardzo! – WHITECOLOR

9

require służy do ładowania innego pliku i wykonywania wszystkich jego instrukcji. Służy to zaimportowaniu wszystkich definicji klas i metod do pliku. require również śledzi, które pliki były wcześniej wymagane, aby nie było wykonywane dwukrotnie.

RubyGem to pakiet oprogramowania, potocznie nazywany "klejnotem". Klejnoty zawierają spakowaną aplikację lub bibliotekę Ruby. Samo oprogramowanie RubyGems pozwala na łatwe pobieranie, instalowanie i manipulowanie klejnotami w systemie. - :

Gemfile jest następnie używany przez bundler do instalacji określonych klejnotów.

open-uri nie jest perełką, ale częścią Biblioteki Standardowej Rubiego, więc wystarczy, że będzie wymagana.

+0

Dzięki. Gdzie najlepiej jest wpisać "open-uri" w gemfile lub gdzieś indziej? – WHITECOLOR

+1

Jeśli używasz go tylko w jednym miejscu, sugerowałbym to tuż przed wywołaniem lub na początku funkcji lub pliku. – jlundqvist

+0

Dziękuję bardzo, doceniam waszą pomoc i czas! – WHITECOLOR