第一篇文章," 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>'
答案 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的文件,并在这些文件中进行编码。