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

Ruby LoadError:无法加载这样的文件--目录/文件名,ruby,Ruby,我有一个像这样的文件结构 root |--lib |--root.rb |--extensions |--strings.rb 我希望能够在root.rb文件中使用string.rb中的方法 因此,我在root.rb文件的顶部添加了require“extensions/strings” 但是我得到LoadError:无法加载这样的文件扩展名/strings.rb错误 我如何避免这种情况 我用了jandot的解决方案 Dir[File.dirname_uufile_u+'

我有一个像这样的文件结构

root
|--lib
   |--root.rb
   |--extensions
      |--strings.rb
我希望能够在root.rb文件中使用string.rb中的方法

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

但是我得到LoadError:无法加载这样的文件扩展名/strings.rb错误

我如何避免这种情况

我用了jandot的解决方案

Dir[File.dirname_uufile_u+'/extensions/*.rb']。每个{文件|需要文件}

经过一些测试后编辑

出于某种原因,这不会抛出任何错误消息,但它似乎没有加载实际的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类

在rubygems.org中读取guid后编辑

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

导游这样解释情况

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

我用了jandot的解决方案

Dir[File.dirname_uufile_u+'/extensions/*.rb']。每个{文件|需要文件}

经过一些测试后编辑

出于某种原因,这不会抛出任何错误消息,但它似乎没有加载实际的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类

在rubygems.org中读取guid后编辑

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

导游这样解释情况

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

您可以尝试以下方法:

require File.dirname(__FILE__) + "/extensions/strings"
您可以尝试以下方法:

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

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

require_relative 'extensions/strings.rb'

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

require_relative 'extensions/strings.rb'
对我有用


适合我。

要求'lib/extensions/string'仍在加载错误:无法加载此类文件-lib/extensions/strings要求'lib/extensions/string'仍在加载错误:无法加载此类文件-lib/extensions/strings设置此设置。LoadError:无法加载这样的文件-/Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rhapsody-0.0.1/lib/extensions/strings设置此文件。LoadError:无法加载这样的文件-/Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rhapsody-0.0.1/lib/extensions/strings设置此文件。LoadError:无法加载这样的文件-/Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rhapsody-0.0.1/lib/extensions/strings.rbrequire\u relative肯定能工作,所以如果它不适合您,那么我需要更多信息。你把陈述放在什么文件里了?该文件的完整路径是什么?strings.rb的完整路径是什么?一旦你开始提出正确的问题,这些问题就不难理解了。谢谢。所有的答案都是对的。我忘了提到的细节是,我试图将文件作为gem加载。获取此文件。LoadError:无法加载这样的文件-/Users/jasonkim/.rvm/gems/ruby-1.9.3-p0/gems/rhapsody-0.0.1/lib/extensions/strings.rbrequire\u relative肯定能工作,所以如果它不适合您,那么我需要更多信息。你把陈述放在什么文件里了?该文件的完整路径是什么?strings.rb的完整路径是什么?一旦你开始提出正确的问题,这些问题就不难理解了。谢谢。所有的答案都是对的。我忘记提到的细节是,我试图将文件作为gem加载。