【问题标题】:require cannot load such file要求无法加载此类文件
【发布时间】:2014-06-05 01:16:10
【问题描述】:

我在同一个目录中有以下 2 个文件:

churn.rb:

 subsystem_names = ['audit', 'fulfillment', 'persistence',    
                     'ui', 'util', 'inventory']
  start_date = month_before(Time.now)       

  puts header(start_date)                   
  subsystem_names.each do | name |
    puts subsystem_line(name, change_count_for(name))   
  end

churn_test.rb:

require "test/unit"
require "churn"    

class ChurnTests < Test::Unit::TestCase 

  def test_month_before_is_28_days
    assert_equal(Time.local(2005, 1, 1),
                 month_before(Time.local(2005, 1, 29)))
  end

end

当我运行churn_test.rb 时,出现以下错误:

/Users/ca/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- churn (LoadError)
    from /Users/ca/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from churn-tests.rb:8:in `<main>'

【问题讨论】:

    标签: ruby tdd


    【解决方案1】:

    当您require sth 时,Ruby 在$LOAD_PATH ($:) 中搜索源代码。出于安全考虑,$LOAD_PATH 中不包含当前工作目录。您可以将目录显式添加到$LOAD_PATH

    $: << File.dirname(__FILE__)
    
    require 'churn'
    

    或使用Kernel#require_relative 要求基于同一目录的模块:

    require_relative "churn"
    

    【讨论】:

    • 感谢您的详细解释。
    • 如何重新配置​​一些文件以将当前工作目录添加到 ruby​​ $LOAD_PATH
    • @PeterZhu 尝试将$: &lt;&lt; "." 添加到这些文件的开头
    猜你喜欢
    • 2019-02-19
    • 2014-09-29
    • 2015-11-13
    • 2015-08-16
    • 2012-03-16
    • 1970-01-01
    • 2016-11-20
    • 2023-03-10
    • 2015-11-20
    相关资源
    最近更新 更多