【问题标题】:Ruby file loading in `require` and `File.expand_path`在 `require` 和 `File.expand_path` 中加载 Ruby 文件
【发布时间】:2013-02-14 16:49:21
【问题描述】:

我正在读取一个 gemspec 文件,目录看起来像

gem/
  lib/
  a.rb
  gem.gemspec

在 gemspec 中有一行

$:.push File.expand_path('../lib', __FILE__)

我想这意味着将 lib 文件夹添加到 Ruby 的加载路径中,这样您就可以在其中使用 require 的东西。

但是为什么../lib 不只是lib

使用与上面相同的示例,如果您想加载a.rb中的代码,您不只是使用require 'a'而不是require '../a'吗?

注意liba.rbgemspec 的相对位置相同。

【问题讨论】:

标签: ruby


【解决方案1】:

使用 require 时,您只需添加所需的文件,例如:

require 'yourfile'

对于上面的示例,您只需要将所需的文件放在您正在处理的文件夹中即可。如果是gem,没关系,直接加上require语句即可。您所看到的是 gem 如何知道包含在 require 中而无需指定文件夹。当您使用 gem 时,您通常会先安装它,然后再要求它,而无需指定从何处获取它。

另一种选择是将所需文件放在另一个文件夹中,然后指定该文件/文件夹的路径:

require './yourfolder/yourfile'

【讨论】:

  • 我更多的是询问 gem require 的内部结构如何相互而不是使用 gem 本身。我的问题下的评论指出我到了正确的地方。无论如何感谢您的回答。
猜你喜欢
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 2012-04-02
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多