要求文件是什么意思?

时间:2016-05-20 02:07:47

标签: ruby rubygems require

我试图找出需要文件的含义,如何要求文件/宝石/等等。我试图在IRB中加载一个文件,并得到这段代码(一个骰子生成器):

LoadError: cannot load such file -- .d6.rb
from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from (irb):14
from C:/Ruby22-x64/bin/irb:11:in `<main>'
  • 这段代码是什么意思?
  • 如何协助在IRB中加载文件?
  • 要求文件是什么意思?

我认为术语&#34;要求&#34;意味着加载&#34;但我不知道机制是什么或文件实际位于何处。

该文件位于我的Ruby Projects文件夹中的硬盘上:

C:\Ruby\d6\d6.rb

我发布的内容是&#34; irb(主要):013:0&gt;要求&#39; ./ d6.rb&#39;&#34;我不熟悉require_relative命令(同样,对Ruby来说还是新手!)。我会发布文件的内容,但我一直在继续处理它,我没想到要保存我当时试图加载的备份副本。我想我不应该包含.rb扩展名吗? Ruby自己加载了吗?

另外,我猜一个侧面问题是:在查看C:/Ruby22-x64/lib/ruby/2.2.0/后,我没有&#34; ruby​​gems&#34;文件夹或错误消息中列出的文件路径的其余部分。我认为那是件坏事吗?

2 个答案:

答案 0 :(得分:1)

  

a)此代码的含义,

如果您的意思是“此错误代码”,则会抱怨它无法找到d6.rb文件,大概是在您require 'd6'之后。

  

b)如何协助在IRB中加载文件?,

不确定这意味着什么。

  

c)要求文件是什么意思?我认为术语“要求”基本上只是意味着“加载”,但我不知道机制是什么或文件实际位于何处

基本上,是的,加载 - 但只有一次。如果需要某个文件,则不能再次要求它(或者更准确地说,您可以但不会发生任何事情,并且false会从true获得require而不是require

关于它们的加载位置,当$LOAD_PATH位于require 'd6'时,Ruby会搜索目录列表。执行require './d6时,仅搜索这些目录。当您require_relative 'd6'时,它将从当前目录加载。当您$_GET['id']时,它将从当前文件所在的目录中加载。

编辑:感谢JörgWMittag的修正。

答案 1 :(得分:0)

  

我认为术语“要求”意味着“加载”,但我不知道机制是什么或文件实际位于何处。

require使ruby解析器读取并执行该文件。 Normaly这用于加载其他模块和类,然后可用于扩展您的应用程序代码功能。

请参阅Kernel#require以获取有关负载机制的更多信息。另请参阅Kernel#require_relative