【问题标题】:Ruby: cannot load such file - LoadErrorRuby:无法加载此类文件 - LoadError
【发布时间】:2015-01-22 14:41:18
【问题描述】:

我收到此“要求”无法加载此类文件错误。

我之前得到了这个,我添加了

__LIB_DIR__ = File.expand_path(File.join(File.dirname(__FILE__), ".."))
unless $LOAD_PATH.include?(__LIB_DIR__)
  $LOAD_PATH.unshift(__LIB_DIR__)
end

我想知道这是做什么的?我将此添加到我项目的主“要求”文件中。 现在我写一个测试用例,

$:.unshift File.join(File.dirname(__FILE__), ".")

我尝试运行它,我得到了 LoadError。我也试过require_relative 不走运。

结构:

Main
  Git
  lib
     files.rb
    base.rb
  test
     test1.rb

我在 base.rb 中有上面的第一个代码块,我在其中执行所有“需要” 当我尝试运行测试时。我得到 LoadError。

'拜托',解释一下第一个和第二个代码块也给我解决办法

【问题讨论】:

  • 这是一个超级混乱的解决方案。你用了什么require_relative 线?那应该行得通。请记住$:$LOAD_PATH 是同一个东西。
  • 能不能给这句话加个“请”:“解释一下第一个和第二个代码块也给我一个解决方案”?这听起来像是一种需求。
  • 听起来你想要月亮。到底是什么问题?

标签: ruby


【解决方案1】:

为了清楚起见,而不是

__LIB_DIR__ = File.expand_path(File.join(File.dirname(__FILE__), ".."))

使用

__LIB_DIR__ = File.expand_path('..', File.dirname(__FILE__))

这是做什么的?

除非 $LOAD_PATH.include?(__LIB_DIR__) $LOAD_PATH.unshift(__LIB_DIR__) 结尾

考虑一下:

ary = %w[a b]
ary # => ["a", "b"]
ary.unshift('c')
ary # => ["c", "a", "b"]

我尝试运行它,我得到了 LoadError。我也试过 require_relative 没有运气。

这可能有多种原因,但很遗憾,您没有分享发生这种情况的代码。 requirerequire_relative 都用于加载代码,但在传递的参数中有不同的语法。我们需要知道您要加载的内容,以及与您的调用脚本相关的文件层次结构中的位置。

也许其中一个或相关的问题会有所帮助:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-25
    • 2012-02-27
    • 2016-04-26
    • 1970-01-01
    • 2016-11-03
    • 2013-08-10
    • 1970-01-01
    • 2012-07-27
    相关资源
    最近更新 更多