您可以创建一个名为的常规可执行 Ruby 文件cow
包含:
#!/usr/bin/env ruby
require 'cow'
Cow.say ARGV.first
注意第一行,这是舍邦线 http://en.wikipedia.org/wiki/Shebang_%28Unix%29。它告诉您的 shell 使用哪个程序来解释脚本。这允许用户简单地调用cow
代替ruby $(which cow)
.
将您的脚本放入bin
目录:
cow/
bin/
cow <- your executable file
lib/
cow.rb
cow/
say.rb
cow.gemspec
现在,您需要做的就是将其放入您的 gem 规范中:
Gem::Specification.new 'cow' do |gem|
gem.executables = %w(bin/cow)
end
在安装过程中,Rubygems 会将 gem 的二进制文件安装在用户路径中的某个位置,确保可以找到它们。
至于选项解析,标准库包括optparse http://www.ruby-doc.org/stdlib-1.9.3/libdoc/optparse/rdoc/OptionParser.html,但也有许多宝石 https://www.ruby-toolbox.com/categories/CLI_Option_Parsers可用的。
我创建我自己的选项解析器,称为 Acclaim https://www.ruby-toolbox.com/projects/acclaim,我在自己的实用程序中使用它。这是一个示例:
class Cow::Command < Acclaim::Command
option :all_caps, '-A', '--all-caps'
when_called do |options, args|
text = args.first.to_s
text.upcase! if options.all_caps?
Cow.say text
end
end
为了测试您的应用程序,您只需执行脚本即可:
$ pwd
~/projects/cow
$ ./bin/cow moo
# output here...
但是,这要求您根据规范构建 gem,并在每次想要测试更改时在本地安装它:
ruby -I ./lib -r cow -e 'puts Cow.version'
0.0.1
gem build cow.gemspec && gem install cow-0.0.1.gem
Bundler http://gembundler.com/通过自动将代码插入到加载路径中,使生活变得更轻松。您只需通过 Bundler 运行可执行文件即可:
$ bundle exec ./bin/cow moo
# output here...