不需要在Ruby中工作

时间:2017-11-09 13:34:39

标签: ruby require filepath

我有两个文件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>'

1 个答案:

答案 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));

this answer in code-review