我试图找出需要文件的含义,如何要求文件/宝石/等等。我试图在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>'
我认为术语&#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; rubygems&#34;文件夹或错误消息中列出的文件路径的其余部分。我认为那是件坏事吗?
答案 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。