我有两个文件person.rb和contact_info.rb,person.rb文件包含一个类,contact_info.rb文件包含一个模块。当我加载' person.rb'在irb中,这在加载' contact_info.rb'位于此文件的顶部。
当我将其切换为要求' contact_info.rb'在person.rb文件的顶部,并在irb中需要' person.rb'我收到了一个错误(我在本文的底部包含了错误,并且使用了完全不同的文件路径。
我已经搜索了一些解决方案,例如使用' ./ person.rb'和require_relative' person'但这些都不起作用。
我已经简化了文件中的代码,以简化操作。
任何帮助都会很棒。
人物中的代码.rb文件
require 'contact_info.rb'
class Person
include ContactInfo
end
contact_info.rb文件中的代码
module ContactInfo
#some code
end
我收到的错误消息 - 当我输入要求的人物时,#rb'在irb。
** note - 当我将文件拖到命令行时,文件路径为/ Volumes / New \ Passport / All \ Creative / Ruby / module_folder_tut / person.rb
LoadError: cannot load such file -- person.rb
from /Users/paulknight/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/paulknight/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from (irb):1
from /Users/paulknight/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
答案 0 :(得分:1)
默认情况下,在ruby搜索路径上的NOT中的当前目录。将其添加到irb
,一切都会正常(假设您从person.rb
所在的目录中启动$: << "."
require "person.rb"
):
function Multiply(a, b){
if(b != null){
return a*b;
}
return function(c){
return a*c;
}
}
console.log(Multiply(5, 2));
console.log(Multiply(5)(2));