在gem install

时间:2017-12-14 09:58:02

标签: ruby command-line-interface

我制作了一个bash命令行工具,我想转换为Ruby。 我知道我必须使用OptionParser和东西来编写程序,但我看看像rake这样的程序,看看一旦你安装了gem,它就可以立即使用了。为什么是这样?当我用optparse创建一个程序时,我必须把它放在我的bin中并让它访问。

如果我将其制作成宝石,如何让用户使用mac或windows开箱即用?

谢谢

1 个答案:

答案 0 :(得分:2)

Gems可以包含可执行文件,这些文件在安装gem时由RubyGems添加到用户的PATH

通常,这些脚本会放入gem的bin目录(或exe)。然后,您可以在gemspec中指定此目录中的脚本应被视为可执行文件:

在你的gemspec文件中,你可以这样做:

Gem::Specification.new do |spec|
  spec.name        = 'my_awesome_gem'
  spec.version     = '0.0.1'

  spec.bindir      = 'bin'
  spec.executables = ['my_script']

  # ...
end

至于脚本本身,你应该确保它被标记为可执行文件(例如Linux / Mac上的chmod +x bin/my_script)并且它有正确的shebang作为它的第一行。通常,它看起来像这样:

#!/usr/bin/env ruby

puts 'Hello World'

您可以在RubyGems guide中了解有关向gem添加可执行文件的详情。

最后,如果您使用bundle gem my_awesome_gem命令创建基本gem结构,它将自动创建合理的gemspec文件和基本结构。只需将您的脚本放入exe目录,一切都应该正常工作。