2016-12-03 8 views
1

Я заметил, что для некоторых драгоценных камней вы должны включить его в файл, где вы хотите его использовать, как это require 'a_gem', но это не всегда так.Когда требуется «требовать» при использовании рубинового драгоценного камня?

Я собираюсь создать самоцветов. Что делать, если я не хочу добавлять require 'my_gem' в файл .rb при его использовании?

+0

Что вы имеете в виду? Вы всегда должны использовать драгоценный камень, чтобы использовать его. Но вы можете потребовать камень в одном файле и использовать его в другом. – Aleksey

ответ

2

Обычно приложение, которое использует драгоценный камень должен требовать перл:

require "my_awesome_gem" 
MyAwesomeGem.do_something_great 

Однако, если приложение использует bundler, который определяет драгоценный камень приложения в файле под названием «Gemfile»:

source 'http://rubygems.org' 
gem 'my_awesome_gem' 

, то приложение может вызвать Bundler таким образом, что автоматически требует всех драгоценных камней, указанных в Gemfile:

require "bundler" 
Bundler.require 
MyAwesomeGem.do_something_great 

Проекты Rails используют Bundler.require, поэтому для использования Rails-приложения не требуется явно использовать драгоценный камень, чтобы использовать его: просто добавьте драгоценный камень в Gemfile и идите.

Более подробную информацию о Bundler.require см bundler documentation

Более подробную информацию о том, как Rails использует Bundler см How Does Rails Handle Gems? Джастин Вайс.

2

Это не имеет смысла. Если вы хотите написать драгоценный камень и использовать его, он должен быть где-то нужен.

Это «где-то» может быть явным в ваших сценариях, оно может быть записано в Gemfile или оно может потребоваться другим сценарием/драгоценным камнем, который требуется для вашего сценария.

Если вы напишете драгоценный камень, Ruby не включит его автоматически во все ваши скрипты.

И, наконец, если вы публикуете его, должен ли каждый сценарий Ruby на Земле волшебным образом потребовать его и выполнить ваш код?

Я предполагаю, что проект, который вы видели, который не использовал require 'a_gem', использовал Gemfile.

 Смежные вопросы

  • Нет связанных вопросов^_^