需要在Ruby的加载路径之外的文件

问题描述:

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

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

+0

你能提供一个例子文件树? – 2013-04-11 01:31:35

+0

为什么不直接指定完整路径加载(“/ path/to/some/directory”)。这将开始在安装ruby的驱动器的根目录。我一直使用它来加载irb中的自定义脚本。 – engineersmnky 2013-04-11 18:25:13

+0

@ChrisHeald:这里的目录树不相关。 gem中的文件是标准格式,但问题是从gem外部加载文件,该文件可以位于用户指定的任何位置。 – Jericon 2013-04-11 20:01:42

此使用require_relative和扩大使用Dir.pwd文件路径是固定的:

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

这在一定程度上起作用。它与ruby 1.8不兼容。* – Jericon 2013-04-26 22:14:24