我正在制作一个带有可执行文件和类库的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"
答案 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
更改为其他路径。