我制作了一个bash命令行工具,我想转换为Ruby。
我知道我必须使用OptionParser
和东西来编写程序,但我看看像rake这样的程序,看看一旦你安装了gem,它就可以立即使用了。为什么是这样?当我用optparse创建一个程序时,我必须把它放在我的bin中并让它访问。
如果我将其制作成宝石,如何让用户使用mac或windows开箱即用?
谢谢
答案 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
目录,一切都应该正常工作。