LoadError:无法加载这样的文件 - 目录/ FILE_NAME

问题描述:

我有一个像LoadError:无法加载这样的文件 - 目录/ FILE_NAME

root 
|--lib 
    |--root.rb 
    |--extensions 
     |--strings.rb 

我希望能够在root.rb文件使用方法string.rb的文件结构。

因此,我在root.rb文件的顶部添加了require 'extensions/strings'

但是我得到了LoadError: cannot load such file -- extensions/strings.rb错误。

我该如何避免这种情况?

+0

'require'lib/extensions/string'' – osahyoun 2013-04-06 19:57:09

+0

仍然出现'LoadError:无法加载这样的文件 - lib/extensions/strings' – 2013-04-06 19:58:28

I found the answer I am looking for here.

我用jandot的解决方案。

Dir[File.dirname(__FILE__) + '/extensions/*.rb'].each {|file| require file }

一些测试后

编辑,

出于某种原因,这不会引发任何错误消息,但它似乎并没有被加载实际的Ruby文件。

我尝试添加这扩展/ strings.rb

class Dog 
    def self.bark 
    puts "bark" 
    end 
end 

并运行它内部评级。

1.9.3-p0 :001 > require 'rhapsody' 
=> true 
1.9.3-p0 :002 > Dog 
NameError: uninitialized constant Dog 
    from (irb):2 
    from /Users/jasonkim/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>' 

因此,由于某些原因,它没有在extensions/strings.rb中找到Dog类。阅读rubygems.org一个GUID后


编辑

当我开始IRB,我不得不去irb -Ilib -rextensions

指南介绍情况这样

We need to use a strange command line flag here: -Ilib. Usually RubyGems includes the lib directory for you, so end users don’t need to worry about configuring their load paths. However, if you’re running the code outside of RubyGems, you have to configure things yourself.

你可以请尝试以下操作:

require File.dirname(__FILE__) + "/extensions/strings" 
+0

得到这个。 'LoadError:无法加载这样的文件 -/Users/jasonkim/.rvm/gems/ruby​​-1.9.3-p0/gems/rhapsody-0.0.1/lib/extensions/strings' – 2013-04-06 20:48:10

如果您使用的是Ruby 1.9或更高版本,请使用require_relative。在root.rb,写:

require_relative 'extensions/strings.rb' 
+0

得到这个。 'LoadError:无法加载这样的文件 -/Users/jasonkim/.rvm/gems/ruby​​-1.9.3-p0/gems/rhapsody-0.0.1/lib/extensions/strings.rb' – 2013-04-06 20:48:47

+1

require_relative绝对可行,所以如果它不适合你,那么我需要更多的信息。你把这个陈述写进了什么档案?该文件的完整路径是什么?什么是strings.rb的完整路径?一旦你开始问正确的问题,这个东西不难搞清楚。 – 2013-04-06 21:23:24

+0

谢谢。所有的答案都是对的。我忘记提到的细节是我试图加载该文件作为宝石。 – 2013-04-06 21:26:20

require_relative '../lib/extensions/strings' 

为我工作。