要求红宝石宝石给出不同的结果

时间:2015-10-03 12:09:03

标签: ruby gem irb pry fileutils

今天注意到在pry中运行.bootstrap-duallistbox-container select option:hover, .bootstrap-duallistbox-container select option:focus, .bootstrap-duallistbox-container select option:active { background-color: red; } 总是返回false。但是,如果我在irb中执行相同的操作,则返回true。此外,当fileutils设置为false时,它仍然有效!

首先我认为fileutils是pry的依赖,这可以解释为什么它已经被要求了。但事实并非如此。我在这里遗漏了一些基本的东西吗?

require fileutils

示例

首先,我使用pry制作一些文件夹。 fileutils已经加载了吗?请注意,即使fileutils返回false,它仍然有效:

[07:40] ~/Desktop $ gem dependency pry
Gem pry-0.10.2
  bundler (~> 1.0, development)
  coderay (~> 1.1.0)
  method_source (~> 0.8.1)
  slop (~> 3.4)

Gem pry-theme-1.1.3
  bundler (~> 1.0, development)
  coderay (~> 1.1)
  json (~> 1.8)

我删除了刚创建的文件夹...

[07:44] ~/Desktop $ ls
[07:44] ~/Desktop $    ########## (nothing)
[07:44] ~/Desktop $ pry
[1] pry(main)> require 'fileutils'
=> false
[2] pry(main)> FileUtils::mkdir_p 'foo'
=> ["foo"]
[3] pry(main)> Dir.mkdir('bar')
=> 0
[4] pry(main)> Dir["/home/caveman/Desktop/*"]
=> ["/home/caveman/Desktop/foo", "/home/caveman/Desktop/bar"]

现在我再次尝试使用irb:

[07:48] ~/Desktop $ rm -r *
[07:48] ~/Desktop $ ls
[07:48] ~/Desktop $    ########## (nothing again)

这就是我的想法。即使我在irb中将'fileutils'设置为false,它仍然有效:

[07:49] ~/Desktop $ irb
irb(main):001:0> require 'fileutils'
=> true
irb(main):002:0> FileUtils::mkdir_p 'foo2'
=> ["foo2"]
irb(main):003:0> Dir.mkdir 'bar2'
=> 0
irb(main):004:0> Dir["/home/caveman/Desktop/*"]
=> ["/home/caveman/Desktop/bar2", "/home/caveman/Desktop/foo2"]

1 个答案:

答案 0 :(得分:1)

首先,FileUtils不是宝石,所以它永远不会显示为宝石依赖。

其次,require的返回值并不告诉您是否要求成功(如果失败,则会引发异常)。 false只是意味着它已经加载了。你的陈述

  

即使我设置了' fileutils'在irb中为假

没有意义。您根本没有设置任何内容,只是再次调用require,第二次返回false。

您所观察到的只是意味着pry(或其中一个依赖项)直接加载FileUtils或加载一些加载FileUtils的标准库。它看起来像pry需要&#t; tempfile',它本身需要' tmpdir'这又需要' fileutils'。

相关问题