【问题标题】:LoadError: cannot load such file -- directory/file_nameLoadError: 无法加载此类文件 -- 目录/文件名
【发布时间】: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

标签: ruby


【解决方案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'
    

    为我工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-30
      • 2015-01-22
      • 2012-10-25
      • 2020-12-05
      • 2017-03-18
      • 2018-07-31
      • 2015-03-20
      • 2012-02-27
      相关资源
      最近更新 更多