gem中的可执行文件如何引用更大的gem?

时间:2015-01-05 14:42:54

标签: ruby rubygems

说我的宝石是 VideoPlayer 。文件夹结构是:

VideoPlayer/
    /bin
        vidplay.rb
    /lib
        VideoPlayer.rb
        Subtitler.rb
        Screenshotter.rb

我希望人们从命令行调用vidplay,并让vidplay引用VideoPlayerSubtitlerScreenshotter文件中的代码。< / p>

如果我只是在vidplay.rbrequire '../lib/VideoPlayer.rb'内写,它会抛出一个错误,说它不能要求这样的文件。我想&#34;也许它自动需要lib/&#34;中的所有内容,但它显然不是;如果我不需要任何,它会说VideoPlayer是一个未初始化的常量。

那么这是如何运作的?

1 个答案:

答案 0 :(得分:1)

我通常会将lib目录添加到库加载路径($:)。您可以将其添加到bin文件的顶部。

lib = File.expand_path('../../lib', __FILE__)
$:.unshift(lib) unless $:.include?(lib)

然后你可以做一个正常的要求:

require 'videoplayer'

希望这有帮助。