Ruby Gem命令行工具



我正在尝试构建一个命令行红宝石。我正在使用Bundler创建宝石并在本地安装宝石。它生成了所需的目录。我还能够测试,如果我需要我的 gem ,我可以使用其中的方法。我正试图使命令销量现在正常工作,并且似乎无法使其正常工作。我希望能够做

之类的事情
gemname command

类似于RSPEC的工作方式:

rspec test/whatever.rb

关于如何通过命令行执行的任何帮助将很棒。

为了声明您只需要在 yourgem.gem.gemspec 中制作适当的行

`git ls-files -- bin/*`.split("n").map{ |f| File.basename(f) }

bundle gem yourgem命令生成了此行,以及其他有用的行。只需执行它,然后根据需要修复 Yourgem.gemspec 。将可执行文件放入宝石的 bin/文件夹中,以及包括版本在内的所有库中 lib/文件夹。

下一步是使用二进制。将GEM安装到系统中时,二进制文件夹将自动包含到二进制搜索路径中。因此,您的宝石可以从Anywere中执行。但是,当您的宝石未安装时,您仍然能够使用Bundler的Exec模拟该情况如下:

 bundle exec bin/your_exec

它从 lib/文件夹中挑选需要librarires,并且可执行文件可正常工作。

确保可执行文件可以工作,使用gem build yourgem.gemspec构建GEM,然后使用gem install yourgem.gem安装,然后尝试。

我认为问题是您尚未提交代码。检查git ls-files -- bin/*是否向您显示要执行的脚本。

提交文件时,git ls-files将返回它,规格将能够加载脚本。

结帐以下博客文章:http://robdodson.me/blog/2012/06/14/how-to-to-write-a-command-line-lline-ruby-gem/http://rubylearning.com/blog/2011/01/03/how-do-i-i-make-a-command-line-tool-in-ruby/

我不太确定您到目前为止建造了什么,但这里有几点兴趣:

  1. #!/usr/bin/env ruby对于可执行文件中的第一行(在/bin文件夹中)。
  2. chmod +x filname使其可执行
  3. ARGV[0]传递的变量从ARGV[0]
  4. 检索
  5. s.executables << 'your_file'将可执行文件添加到Gemspec

我至少在我的特定问题上弄清楚了这一点。我只需要直接喊出bin命令,而不是git ls循环。顶部的作用底部不是出于某种原因。

spec.executables = ["toolshed"]

vs

spec.executables = `git ls-files -- bin/*`.split("n").map{ |f| File.basename(f) }

最新更新