如何编写一个可以在其前面没有“ruby”一词的情况下调用的Ruby gem

时间:2015-03-03 19:06:10

标签: ruby gem

我想编写一个包含在Gem中的CLI应用程序,可以像调用git命令或gem命令一样调用它。例如,当运行说“git clone”时,你不需要在它之前加上'ruby'。但是,到目前为止我看到的有关编写宝石的教程和文章并没有显示出来。这些示例要求您通过irb运行gem,并满足相应的要求,或者像'ruby'一样运行它。这不是我想要的。如果您知道任何涵盖此内容的教程,那就太棒了。

感谢。

1 个答案:

答案 0 :(得分:3)

"#!"脚本开头的行告诉你shell执行脚本的可执行文件。在这种情况下,它告诉它从环境中找到Ruby可执行文件并将脚本提供给它来执行。

通过示例,我有一个名为" hi"的文件,其中包含以下内容:

#!/usr/bin/env ruby
puts "hi!"

我让它可执行:

$ chmod a+x hi

然后我可以直接执行它,而无需显式调用Ruby解释器:

$ ./hi
hi!

the tutuorial你只需提供一个需要你的宝石和诸如此类的文件,并在你的gemspec的executables属性中提供它:

Gem::Specification.new do |s|
  # ...
  s.executables << 'hi'

安装gem后,hi脚本将被安装到路径上可发现的位置,因此您可以调用它。