【问题标题】:Is `require "rubygems"` returning `false` ok?`require "rubygems"` 返回 `false` 可以吗?
【发布时间】:2015-07-04 02:29:03
【问题描述】:

要求"rubygems" 得到false,但要求"appium_lib" 得到true。即,

require 'rubygems' # => false
require 'appium_lib' # => true

这样好吗?这不像试图要求一些真正不存在的东西,即:

require 'does_not_existxxxxxxx' # => LoadError: cannot load such file -- does_not_existxxxxxxx

【问题讨论】:

  • 我认为 Ruby 开发人员会非常感激,如果您能提交一个错误并告诉他们您对 the documentation 的不清楚之处:“require(name)truefalse:加载给定name,如果成功则返回true,如果该功能已加载,则返回false。"

标签: ruby rubygems ruby-2.1


【解决方案1】:

应该没问题。第二次请求文件会导致错误响应。使用load 则不同,每次请求文件时都会使用load (require)。

所以这只是意味着 irb 以 rubygems 开头已经是必需的,这并不奇怪。

例如,load 在 Rails 的开发模式中大量使用,因此您的更改可以立即显示。

由于 Ruby 1.9 自动需要 ruby​​gems。

【讨论】:

  • 您可能想补充一点,在旧版本的 Ruby 中需要 require "rubygems",但在新版本中不需要。
【解决方案2】:

当您require 一个 gem 时,实际上您只是将该 gem 的 lib 目录放到您的 $LOAD_PATH 中。如果它返回 false,则意味着它已经在您的 $LOAD_PATH 中。

Requiring a Gem

【讨论】:

    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 2017-02-24
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多