使用红宝石宝石时需要什么时候需要?

时间:2016-12-03 09:36:09

标签: ruby rubygems require

我注意到某些宝石你必须将它包含在你想要使用它的文件中require 'a_gem',但情况并非总是这样。

我将自己创作一个宝石。如果我不想在使用时将require 'my_gem'添加到.rb文件,该怎么办?

2 个答案:

答案 0 :(得分:2)

通常,使用gem的应用程序需要gem:

require "my_awesome_gem"
MyAwesomeGem.do_something_great

但是,如果某个应用程序正在使用bundler,它会在名为" Gemfile"的文件中定义应用程序的gem:

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

然后应用程序可以以自动需要Gemfile中指定的所有gem的方式调用bundler:

require "bundler"
Bundler.require
MyAwesomeGem.do_something_great

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

有关Bundler.require的详情,请参阅bundler documentation

有关Rails如何使用Bundler的更多信息,请参阅Justin Weiss的How Does Rails Handle Gems?

答案 1 :(得分:1)

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

这个“某个地方”可能是您的脚本中的明确内容,可以用Gemfile编写,也可以由脚本所需的另一个脚本/ gem来使用。

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

最后,如果你发布它,地球上每个Ruby脚本都会神奇地需要它并执行你的代码吗?

我认为您看到的未使用require 'a_gem'的项目使用的是Gemfile。