【问题标题】:Requiring file outside of load path in Ruby在Ruby中的加载路径之外需要文件
【发布时间】:2013-04-10 23:42:15
【问题描述】:

我有一个我编写的 gem,它有许多处理程序,每个处理程序在 gem 中都有自己的 ruby​​ 文件。我需要添加在命令行上指定文件的功能,该文件将以与这些其他处理程序相同的方式加载。该文件通常不在 gem 的默认加载路径中。

我不确定执行此操作的最佳方法。我可以取文件名,然后将包含目录添加到加载路径,然后加载文件。我可以让用户指定一个包含要读取的处理程序的目录而不是指定文件,或者我确信有更好的方法来做到这一点,我还没有想到。

【问题讨论】:

  • 你能提供一个示例文件树吗?
  • 为什么不直接指定完整路径加载(“/path/to/some/directory”)。这将从安装 ruby​​ 的驱动器的根目录开始。我一直使用它在 irb 中加载自定义脚本。
  • @ChrisHeald:目录树在这里不相关。 gem 中的文件是标准格式,但问题是从 gem 外部加载文件,该文件可以是用户指定的任何位置。
  • @engineersmnky 我过去曾尝试过,但收到文件不存在的错误,可能是因为它不在加载路径中。
  • 你试过 require_relative 了吗?然后,您可以提供从 gem 到文件的相对路径

标签: ruby require load-path


【解决方案1】:

已使用 require_relative 修复此问题,并使用 Dir.pwd 扩展文件路径:

req_path = File.expand_path(arg, Dir.pwd)
require_relative req_path

【讨论】:

  • 这在一定程度上可行。它与 ruby​​ 1.8 不兼容。*
猜你喜欢
  • 2014-06-06
  • 2011-04-05
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多