ruby要求命令无法正确加载

时间:2015-11-11 00:47:19

标签: ruby yosemite

第一篇文章," Hello World"

我正在研究Ruby上的lynda视频,我只是想要从irb中的.rb文件中获取内容。我们制作的示例补丁名为contact_info.rb,而irb我试图要求该文件。执行时,它会随附在下面。

一些轻微的谷歌搜索似乎这可能是一个优胜美地问题(运行10.10.3。),但我不确定如何排除故障。

全部谢谢

irb(main):006:0> require contact_info.rb
LoadError: cannot load such file -- contact_info.rb
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in 'require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in 'require'
    from (irb):6
    from /usr/bin/irb:12:in '<main>'

3 个答案:

答案 0 :(得分:1)

您可以使用require_relative 'contact_info'

答案 1 :(得分:0)

假设文件位于当前目录中,请在命令行中输入:

irb -r './contact_info.rb'

答案 2 :(得分:0)

首先,请注意,对于任何require语句,您省略了文件扩展名:

require 'contact_info'

当你require一个文件时,ruby只会查看你计算机上某些目录中的文件。您可以通过运行以下代码来查看这些目录:

p $LOAD_PATH

In ruby 1.8.7$LOAD_PATH数组包含"."或当前目录,这意味着您的代码可以运行。但是,包括$ LOAD_PATH中的当前目录被认为是安全风险,所以现在你必须做一些不同的事情:

1)一个选项是对您在require语句中指定的文件使用relative path

require './contact_info'

路径相对于current directory。如果你有这个结构,那很好用:

/some/dir/
    your_prog.rb
    contact_info.rb

您将目录切换为/some/dir,然后运行your_prog.rb

~$ cd /some/dir
/some/dir$ ruby my_prog.rb

require语句有效 - 没问题。但是,如果你这样做会怎样:

/some/dir$ cd ..
/some$ ruby ./dir/your_prog.rb

现在,当前目录为/some,而require './contact_info'告诉ruby查看/some目录contact_info.rb - 但它不存在,所以你会得到错误:

`require': cannot load such file -- ./contact_info.rb (LoadError)

2)为了解决这个问题,ruby添加了require_relative。使用require_relative指定的路径相对于包含require_relative语句的 文件 的位置。结果,声明:

#your_prog.rb:
require_relative './contact_info'

...将在包含your_prog.rb的目录中查找文件contact_info.rb。现在,这样做:

/some$ ruby ./dir/your_prog.rb

会正常工作。事实上,在require_relative中你甚至不必在路径中写./

#your_prog.rb:
require_relative 'contact_info'  #Look for contact_info.rb in the same
                                 #directory that contains this file

require_relative '../contact_info'  #Look for contact_info.rb one directory
                                    #above the directory that contains this file
  

我正在研究Ruby上的lynda视频,我刚刚开始   需要来自irb。中的.rb文件内容的部分。

在我看来,将irb用于任何事情并不是一个好主意。更好的选择是创建一些名为1.rb,2.rb,3.rb的文件,并在这些文件中进行编码。