/ Exigir rubygems - ruby, rubygems, require

exigem "rubygems" - rubi, rubygems, exigem

Eu vi muitos exemplos de código Ruby com esta linha (por exemplo, http://www.sinatrarb.com/). Qual é o objetivo disso exigir?

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

Em todos os casos, o código funciona sem essa linha.

Respostas:

15 para resposta № 1

Muitas vezes é supérfluo. Isso permitirá que você exija versões específicas de gemas específicas, com o gem comando.

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


22 para resposta № 2

require "rubygems" vai ajustar o Ruby loadpath permitindo que você exija com sucesso as gemas que você instalou através de rubygems, sem obter LoadError: no such file to load -- sinatra.

Da documentação do rubygems-1.3.6:

Quando o RubyGems é necessário, o Kernel # require é substituído pelo nosso próprio que é capaz de carregar pedras preciosas sob demanda.

Quando você chama require "x", isso é o que acontece:

  • Se o arquivo puder ser carregado a partir do caminho de carga existente do Ruby, é.

  • Caso contrário, as gemas instaladas são procuradas por um arquivo que fósforos. Se for encontrado na gema "y", essa gema é ativada (adicionado ao caminho de carga).

O normal requer funcionalidade de retornar false se esse arquivo já foi carregado é preservado.

Veja a documentação para Kernel # requer para entender porque isso é necessário.


13 para resposta № 3

Como complemento ao anterior (e às respostas corretas): o Ruby 1.9 e o mais novo com RubyGems embutido, então não há necessidade real de require "rubygems". Fonte aqui