/ / wymagają „rubygemów” - ruby, rubygemy, wymagają

wymagają "rubygemów" - rubinów, rubygmatów, wymagają

Widziałem wiele próbek kodu Ruby z tym wierszem (na przykład http://www.sinatrarb.com/). Jaki jest tego cel?

# require "rubygems"
require "sinatra"
get "/hi" do
"Hello world!"
end

We wszystkich przypadkach kod działa bez tego wiersza.

Odpowiedzi:

15 dla odpowiedzi № 1

Często jest to zbyteczne. Pozwoli ci to wymagać określonych wersji konkretnych klejnotów, z gem dowództwo.

https://guides.rubygems.org/patterns/#requiring-rubygems


22 dla odpowiedzi nr 2

require "rubygems" dostosuje Ruby loadpath pozwalając ci z powodzeniem wymagać klejnotów zainstalowanych przez rubygemy, bez uzyskania LoadError: no such file to load -- sinatra.

Z dokumentacji rubygems-1.3.6:

Gdy wymagany jest RubyGems, żądanie jądra # jest zastępowane naszym własnym który może ładować klejnoty na żądanie.

Gdy dzwonisz, potrzebujesz „x”, tak się dzieje:

  • Jeśli plik można załadować z istniejącej ścieżki ładowania Ruby, to jest.

  • W przeciwnym razie zainstalowane klejnoty są wyszukiwane w poszukiwaniu pliku, który mecze. Jeśli zostanie znaleziony w klejnocie „y”, ten klejnot jest aktywowany (dodane do ścieżki ładowania).

Normalne wymagają funkcjonalności zwracania wartości false, jeśli ten plik został już załadowany jest zachowany.

Zobacz dokumentację dla Jądro # wymaga aby zrozumieć, dlaczego jest to konieczne.


13 dla odpowiedzi nr 3

Jako dodatek do wcześniejszych (i poprawnych odpowiedzi): Ruby 1.9 i nowsze są dostarczane z wbudowanym RubyGems, więc nie ma potrzeby require "rubygems". Źródło tutaj