LoadError: 无法加载此类文件 -- 目录/文件名

Posted

技术标签:

【中文标题】LoadError: 无法加载此类文件 -- 目录/文件名【英文标题】:LoadError: cannot load such file -- directory/file_name 【发布时间】:2013-03-29 03:08:55 【问题描述】:

我有一个类似的文件结构

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

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

所以我在root.rb 文件的顶部添加了require 'extensions/strings'

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

如何避免这种情况?

【问题讨论】:

require 'lib/extensions/string' 仍然收到LoadError: cannot load such file -- lib/extensions/strings 【参考方案1】:

I found the answer I am looking for here.

我使用了jandot的解决方案。

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


经过一些测试后编辑,

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

我尝试将其添加到 extensions/strings.rb

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

然后在 irb 上运行它。

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 类。


阅读 ruby​​gems.org 中的 guid 后进行编辑

当我开始 irb 时,我必须去irb -Ilib -rextensions

指南这样解释情况

我们需要在这里使用一个奇怪的命令行标志:-Ilib。通常 RubyGems 会为您包含 lib 目录,因此最终用户无需担心配置其加载路径。但是,如果您在 RubyGems 之外运行代码,则必须自己进行配置。

【讨论】:

【参考方案2】:

您可以尝试以下方法:

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

【讨论】:

得到这个。 LoadError: cannot load such file -- /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rhapsody-0.0.1/lib/extensions/strings【参考方案3】:

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

require_relative 'extensions/strings.rb'

【讨论】:

得到这个。 LoadError: cannot load such file -- /Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rhapsody-0.0.1/lib/extensions/strings.rb require_relative 绝对有效,所以如果它不适合您,那么我需要更多信息。你把声明放在什么文件里?该文件的完整路径是什么? strings.rb 的完整路径是什么?一旦你开始提出正确的问题,这些东西就不难弄清楚了。 谢谢。所有的答案都是正确的。我忘记提到的细节是我试图将文件加载为 gem。【参考方案4】:
require_relative '../lib/extensions/strings'

为我工作。

【讨论】:

以上是关于LoadError: 无法加载此类文件 -- 目录/文件名的主要内容,如果未能解决你的问题,请参考以下文章

无法加载此类文件 -- openssl (LoadError)

Ruby:无法加载此类文件 - LoadError

Ruby loaderror 无法加载此类文件

rails 无法加载此类文件 -- rake (LoadError)

LoadError: 无法加载此类文件 -- test/unit/error

无法安装 gem - 无法构建 gem 本机扩展 - 无法加载此类文件 - mkmf (LoadError)