似乎gem的可执行文件通常存储在/bin
文件夹中,所有代码都存储在/lib
文件夹中。我有一些第三方二进制可执行文件,我需要包含在我的gem中。我应该将它们放在/bin
或/lib
文件夹中吗?
从我看到的/bin
文件夹更多的是系统可执行文件,或者我希望我的系统能够从命令行调用的脚本。所以我不确定是否应该在/bin
文件夹中包含第三方二进制文件。需要根据需要从/lib
代码调用它们,而不是从命令行调用它们。
我想我可以将它们放在/lib/binaries
文件夹中。随后,是否有从代码中调用这些可执行文件的最佳实践?
答案 0 :(得分:2)
一般来说,您不希望在您的应用中加入“第三方可执行文件”;理想情况下,如果它们是RubyGems,您可以在gemspec中依赖它们。
话虽如此,假设您有充分的理由这样做,您可以确保它们通过以下方式分发到您的RubyGem中:
bin
files
属性executables
属性bindir
已设置。所以,如果你有 / /箱 /斌/ your_app /斌/ other_app /斌/ other_app2 /lib/your_app.rb
你的gemspec需要看起来像这样:
spec = Gem::Specification.new do |s|
s.name = 'your_app'
s.version = '1.2.3'
s.author = 'Your'
s.email = 'your@email.com'
s.platform = Gem::Platform::RUBY
s.summary = 'Your app summary'
s.description = 'Your app description`
s.files = [
'bin/your_app',
'bin/other_app',
'bin/other_app2',
'lib/your_app.rb',
]
s.executables = ["your_app","other_app","other_app2"]
s.require_paths = ["lib"]
s.bindir = 'bin'
end
当用户通过RubyGems安装您的应用程序时,三个可执行文件将在他们的路径中。