关于require,require_relative的困惑,包含在Ruby中

时间:2013-12-24 22:59:03

标签: ruby rspec

如果下面有任何错误,请纠正我。

  1. 我的理解是我可以在spec_helper.rb中使用require 'gemname'

  2. 我可以在spec_helper.rb的lib目录中使用require而没有任何文件路径吗?

  3. 我从未在spec.helper.rb中使用require_relative

  4. 我需要在lib / myfile.rb中使用requirerequire_relative

  5. Q值。我何时需要在lib / myfile.rb中使用include

    更新

    样本结构

    .
    ./ChangeLog.rdoc
    ./data
    ./data/msdata2013.xls
    ./data/msdataparts.xls
    ./Gemfile
    ./Gemfile.lock
    ./lib
    ./lib/correlation.rb
    ./lib/Irtest.rb
    ./lib/subcorrelation
    ./lib/subcorrelation/subjects.rb
    ./lib/subcorrelation/version.rb
    ./lib/subcorrelation.rb
    ./LICENSE.txt
    ./Rakefile
    ./README.rdoc
    ./spec
    ./spec/spec_helper.rb
    ./spec/subcorrelation_spec.rb
    ./subcorrelation.gemspec
    

2 个答案:

答案 0 :(得分:2)

  1. 是的,您可以在spec_helper.rb中找到一个宝石
  2. 取决于你的lib目录结构,如果是平的,你不需要在lib目录中指定默认的路径
  3. 要求亲戚只搜索相对于spec_helper.rb的文件,这可能不正确,因为它在lib目录中查找文件
  4. 您可能需要在requirerequire_relative
  5. 上查找文档

    include用于包含ruby中的模块

答案 1 :(得分:0)

一般情况下,在这种情况下你会使用require for gems,这些不需要路径。

require_relative在您的情况下需要一个路径,并且应放在您需要使用其他文件的任何文件中。(如果您正在编写测试,那么您正在测试的文件需要通过require_relative列出。测试文件)

包含(和扩展)与模块有关,据我所知,你不需要它们。

相关问题