使用Ruby gem时,何时需要使用'require'?

5
我注意到有些宝石必须在使用它的文件中包含它,例如:require 'a_gem',但并非总是如此。
我将自己编写一个宝石。如果我不想在使用它时在 .rb 文件中添加 require 'my_gem' ,该怎么办?

什么意思?你应该始终要求一个 gem 才能使用它。但是你可以在一个文件中要求一个 gem 并在另一个文件中使用它。 - Aleksey
2个回答

9
通常,使用 gem 的应用程序需要 require 该 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文档
有关Rails如何使用Bundler的更多信息,请参见Justin Weiss的Rails如何处理Gems?

0

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

"某个地方" 可以是你的脚本中明确指定,可以在 Gemfile 中写入,或者由其他被你的脚本所要求的脚本/Gem 要求。

如果你编写一个 Gem,Ruby 不会自动将它包含在所有脚本中。

最后,如果你发布它,难道每个使用 Ruby 的脚本都会奇迹般地要求它并执行你的代码吗?

我猜你看到的那个项目没有使用 require 'a_gem',而是使用了 Gemfile。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接