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 № 1Czę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