require 'rubygems' отрегулирует Ruby loadpath, позволяя вам успешно использовать драгоценные камни, установленные вами через rubygems, без получения LoadError: no such file to load -- sinatra.
Из документации rubygems-1.3.6:
Когда требуется RubyGems, ядро # require заменяется нашим собственным который способен загружать драгоценные камни по требованию.
Когда вы вызываете require 'x', это то, что происходит:
Если файл можно загрузить из существующего пути загрузки Ruby, он есть.
В противном случае, в найденных драгоценных камнях выполняется поиск файла, который Матчи. Если он найден в gem 'y', этот жемчуг активируется (добавлен в путь загрузки).
Нормальный требует функции возврата false, если этот файл уже загружен.
См. документацию для Ядро # требуется, чтобы понять, почему это необходимо.
Ответ 3
В дополнение к предыдущим (и правильным ответам): Ruby 1.9 и более новое судно с встроенным RubyGems, поэтому нет необходимости в require 'rubygems'. Источник здесь