2

似乎gem的可执行文件通常存储在/bin文件夹中,所有代码都存储在/lib文件夹中。我有一些第三方二进制可执行文件需要包含在我的 gem 中。我应该把它们放在/bin文件/lib夹中吗?

从我所见,该/bin文件夹更多地用于系统可执行文件或我希望我的系统能够从命令行调用的脚本。所以我不确定是否应该在文件夹中包含第三方二进制/bin文件。它们需要根据需要从/lib代码中调用,而不是从命令行调用。

我想我可以把它们放在一个/lib/binaries文件夹里。随后,是否有从我的代码中调用这些可执行文件的最佳实践?

4

1 回答 1

2

一般来说,您不想在您的应用程序中包含“第三方可执行文件”;理想情况下,如果它们是 RubyGems,您可以在 gemspec 中依赖它们。

话虽如此,假设您有充分的理由这样做,您可以通过以下方式确保它们分布在您的 RubyGem 中:

  • 将它们放入bin
  • 确保它们包含在filesgemspec 的属性中
  • 确保它们包含在executablesgemspec 的属性中
  • 确保bindir已设置。

所以,如果你有 / /bin /bin/your_app /bin/other_app /bin/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 安装您的应用程序时,三个可执行文件将位于其路径中。

于 2012-05-19T17:59:23.453 回答