gem 中的可执行文件如何引用更大的 gem?
How does an executable within a gem reference the greater gem?
说我的gem是VideoPlayer。文件夹结构为:
VideoPlayer/
/bin
vidplay.rb
/lib
VideoPlayer.rb
Subtitler.rb
Screenshotter.rb
我希望人们从命令行调用 vidplay
,并让 vidplay
引用 VideoPlayer
、Subtitler
和 Screenshotter
文件中的代码.
如果我只是写,在vidplay.rb
、require '../lib/VideoPlayer.rb'
之内,它会抛出一个错误,说它不能要求这样的文件。我以为 "Maybe it automatically requires everything in lib/
",但显然不是;如果我不需要 任何东西,它会说 VideoPlayer 是一个未初始化的常量。
那么这是如何工作的?
我通常将 lib
目录添加到库加载路径 ($:
)。您可以将其添加到 bin 文件的顶部。
lib = File.expand_path('../../lib', __FILE__)
$:.unshift(lib) unless $:.include?(lib)
然后你可以做一个正常的要求:
require 'videoplayer'
希望对您有所帮助。
说我的gem是VideoPlayer。文件夹结构为:
VideoPlayer/
/bin
vidplay.rb
/lib
VideoPlayer.rb
Subtitler.rb
Screenshotter.rb
我希望人们从命令行调用 vidplay
,并让 vidplay
引用 VideoPlayer
、Subtitler
和 Screenshotter
文件中的代码.
如果我只是写,在vidplay.rb
、require '../lib/VideoPlayer.rb'
之内,它会抛出一个错误,说它不能要求这样的文件。我以为 "Maybe it automatically requires everything in lib/
",但显然不是;如果我不需要 任何东西,它会说 VideoPlayer 是一个未初始化的常量。
那么这是如何工作的?
我通常将 lib
目录添加到库加载路径 ($:
)。您可以将其添加到 bin 文件的顶部。
lib = File.expand_path('../../lib', __FILE__)
$:.unshift(lib) unless $:.include?(lib)
然后你可以做一个正常的要求:
require 'videoplayer'
希望对您有所帮助。