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
错误。
我该如何避免这种情况?
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"
得到这个。 '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'
得到这个。 '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
require_relative绝对可行,所以如果它不适合你,那么我需要更多的信息。你把这个陈述写进了什么档案?该文件的完整路径是什么?什么是strings.rb的完整路径?一旦你开始问正确的问题,这个东西不难搞清楚。 – 2013-04-06 21:23:24
谢谢。所有的答案都是对的。我忘记提到的细节是我试图加载该文件作为宝石。 – 2013-04-06 21:26:20
require_relative '../lib/extensions/strings'
为我工作。
'require'lib/extensions/string'' – osahyoun 2013-04-06 19:57:09
仍然出现'LoadError:无法加载这样的文件 - lib/extensions/strings' – 2013-04-06 19:58:28