требовать 'rubygems' - PullRequest
       14

требовать 'rubygems'

35 голосов
/ 26 апреля 2010

Я видел много примеров кода Ruby с этой строкой (например, http://www.sinatrarb.com/). Для чего это нужно?

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

Во всех случаях код работает без этой строки.

Ответы [ 3 ]

24 голосов
/ 26 апреля 2010

require 'rubygems' отрегулирует Ruby loadpath, позволяя вам успешно запрашивать камни, установленные вами через rubygems, без получения LoadError: no such file to load -- sinatra.

Из документации по rubygems-1.3.6:

Когда требуется RubyGems, Kernel # require заменяется на наш собственный который способен загружать драгоценные камни по требованию.

Когда вы звоните требовать 'x', вот что происходит:

  • Если файл может быть загружен из существующего пути загрузки Ruby, он есть.

  • В противном случае в установленных гемах ищется файл, который Матчи. Если он найден в gem 'y', этот камень активируется (добавлено в путь загрузки).

Обычная функция, требующая возврата false, если этот файл уже загружен, сохраняется.

См. Документацию для Ядро # требуется , чтобы понять, почему это необходимо.

17 голосов
/ 26 апреля 2010

Часто это лишнее. Это позволит вам требовать определенные версии определенных драгоценных камней с помощью команды gem.

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

13 голосов
/ 12 июня 2015

В дополнение к предыдущему (и правильному ответу): Ruby 1.9 и более новые поставляются со встроенным RubyGems, так что нет необходимости в require 'rubygems' Источник здесь

...