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

Leo*_*Leo 5 ruby rubygems require

我注意到对于某些 gem,您必须将其包含在要像这样使用它的文件中require 'a_gem',但情况并非总是如此。

我要自己创作一颗宝石。require 'my_gem'使用时不想添加到.rb文件中怎么办?

Way*_*rad 10

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

require "my_awesome_gem"
MyAwesomeGem.do_something_great
Run Code Online (Sandbox Code Playgroud)

但是,如果应用程序使用bundler,它在名为“Gemfile”的文件中定义应用程序的gem:

source 'http://rubygems.org'
gem 'my_awesome_gem'
Run Code Online (Sandbox Code Playgroud)

那么应用程序可以以自动需要 Gemfile 中指定的所有 gem 的方式调用捆绑器:

require "bundler"
Bundler.require
MyAwesomeGem.do_something_great
Run Code Online (Sandbox Code Playgroud)

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

有关 的更多信息Bundler.require,请参阅捆绑程序文档

有关 Rails 如何使用 Bundler 的更多信息,请参阅Rails 如何处理 Gems?作者:贾斯汀·韦斯。