如何写一个 Ruby gem 可以在没有前面的单词 'ruby' 的情况下被调用
How to write a Ruby gem that can be invoked without the word 'ruby' preceding it
我想编写一个封装到 Gem 中的 CLI 应用程序,可以像调用 git 命令或 gem 命令一样调用它。例如,当 运行 说 "git clone " 时,您不需要在它前面加上 'ruby'。但是,到目前为止我看到的关于编写 gems 的教程和文章并没有显示这一点。这些示例要么要求您通过 irb 运行 您的 gem,并有适当的要求,要么您 运行 它就像 'ruby '。这不是我想要的。如果您知道任何涵盖此内容的教程,那就太好了。
谢谢。
“#!”脚本开头的行告诉您 shell 使用哪个可执行文件来执行脚本。在这种情况下,它告诉它从环境中找到 Ruby 可执行文件并将脚本交给它执行。
例如,我有一个名为 "hi" 的文件,其中包含以下内容:
#!/usr/bin/env ruby
puts "hi!"
我让它可执行:
$ chmod a+x hi
然后我可以直接执行它,而无需显式调用 Ruby 解释器:
$ ./hi
hi!
根据 the tutuorial,您只需提供这样一个文件,它需要您的 gem 等等,并在您的 gem 的 executables
属性 中提供]规格:
Gem::Specification.new do |s|
# ...
s.executables << 'hi'
安装 gem 后,hi
脚本将安装到路径上可发现的位置,这样您就可以调用它。
我想编写一个封装到 Gem 中的 CLI 应用程序,可以像调用 git 命令或 gem 命令一样调用它。例如,当 运行 说 "git clone " 时,您不需要在它前面加上 'ruby'。但是,到目前为止我看到的关于编写 gems 的教程和文章并没有显示这一点。这些示例要么要求您通过 irb 运行 您的 gem,并有适当的要求,要么您 运行 它就像 'ruby '。这不是我想要的。如果您知道任何涵盖此内容的教程,那就太好了。
谢谢。
“#!”脚本开头的行告诉您 shell 使用哪个可执行文件来执行脚本。在这种情况下,它告诉它从环境中找到 Ruby 可执行文件并将脚本交给它执行。
例如,我有一个名为 "hi" 的文件,其中包含以下内容:
#!/usr/bin/env ruby
puts "hi!"
我让它可执行:
$ chmod a+x hi
然后我可以直接执行它,而无需显式调用 Ruby 解释器:
$ ./hi
hi!
根据 the tutuorial,您只需提供这样一个文件,它需要您的 gem 等等,并在您的 gem 的 executables
属性 中提供]规格:
Gem::Specification.new do |s|
# ...
s.executables << 'hi'
安装 gem 后,hi
脚本将安装到路径上可发现的位置,这样您就可以调用它。