2016-12-03 55 views
1

我注意到一些宝石,你必须将它包含在你想要使用它的文件中,像这样require 'a_gem',但事实并非总是如此。使用红宝石时,“需要”何时需要?

我要自己写一篇宝石。如果我不想在使用它时将require 'my_gem'添加到.rb文件,我应该怎么做?

+0

你是什么意思?你应该总是需要一个宝石才能使用它。但是你可以在一个文件中需要一个gem,并在另一个文件中使用它。 – Aleksey

回答

2

通常情况下,即使用宝石需要,要求创业板的应用程序:

require "my_awesome_gem" 
MyAwesomeGem.do_something_great 

但是,如果一个应用程序使用bundler,它定义了一个名为“Gemfile中”文件的应用程序的宝石:

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

然后在应用程序中,可自动要求所有在的Gemfile指定的宝石的一种方式可以调用打包器:

require "bundler" 
Bundler.require 
MyAwesomeGem.do_something_great 

Rails项目使用Bundler.require,所以Rails应用程序不需要显式地需要gem才能使用它:只需将gem添加到Gemfile中即可。

更多关于Bundler.require,看到bundler documentation

Rails的是如何使用捆扎机,看到How Does Rails Handle Gems?由贾斯汀·魏斯更多。

2

这没有意义。如果你想写一个Gem并使用它,它需要在某个地方需要。

这个“某个地方”可以在你的脚本中明确表示,它可以写在Gemfile中,或者脚本需要的另一个脚本/宝石可能需要它。

如果您编写一个gem,Ruby将不会自动将其包含在您的所有脚本中。

最后,如果你发布它,地球上的每一个Ruby脚本是否应该神奇地需要它并执行你的代码?

我想你看到的项目没有使用require 'a_gem'正在使用Gemfile。