【问题标题】:When is the 'require' necessary when using a ruby gem?使用红宝石宝石时,什么时候需要“要求”?
【发布时间】:2017-04-18 04:43:24
【问题描述】:

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

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

【问题讨论】:

  • 什么意思?您应该始终需要宝石才能使用它。但是您可以在一个文件中要求 gem 并在另一个文件中使用它。

标签: ruby rubygems require


【解决方案1】:

通常,使用 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?

【讨论】:

    【解决方案2】:

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

    这个“某处”可能在您的一个脚本中是明确的,它可以写在 Gemfile 中,或者您的脚本所需的另一个脚本/gem 可能需要它。

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-18
      • 2011-02-12
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多