可执行文件“require”找不到它自己的库

时间:2015-06-08 21:08:18

标签: ruby gem rubygems

我正在制作一个带有可执行文件和类库的ruby gem。可执行文件具有require "fpa/chklinks",它是lib/fpa目录中的类库。

运行名为chklinks.rb的可执行文件时出现以下错误:

$ bin/chklinks.rb -h
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- fpa/chklinks (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from bin/chklinks.rb:7:in `<main>'

如何在开发过程中找到我的库?我试过了require_relative "../lib/fpa/chklinks"

2 个答案:

答案 0 :(得分:1)

我通过将以下内容添加到我的require语句上方的可执行文件中来修复此问题:

$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)

根据David Grayson的帖子$LOAD_PATH << 'lib'

虽然这样做了。是否有一个更好的地方,因为我认为我必须在生产之前注释掉这条线?

由于

答案 1 :(得分:0)

您的gem应该有一个lib目录。在开发过程中,您需要以某种方式将该lib目录添加到Ruby的加载路径中。

您可以在Ruby代码中添加它。我不建议在你的情况下这样做,但是在你的测试助手或规范帮助文件中放置这样的东西是有帮助的,以帮助你的测试找到你的库:

$LOAD_PATH << 'lib'

您可以使用Ruby命令行选项或环境变量添加它:

RUBYOPT="-Ilib" ruby bin/chklinks.rb
ruby -Ilib bin/checklinks.rb

我假设上面的命令将从gem的根目录运行,因此您需要添加的路径只是lib。如果您的设置不同,您可以将上面命令中的lib更改为其他路径。

相关问题