繁体   English   中英

Ruby Gem命令行工具

[英]Ruby Gem command line tool

我正在尝试构建一个命令行 我使用bundler来创建gem并在本地安装gem。 它生成了所需的目录。 我也能够测试,如果我需要我的宝石,我可以使用它内部的方法。 我正在尝试让命令行工作现在正常工作,似乎无法使其正常工作。 我希望能够做类似的事情

gemname command

工作方式类似:

rspec test/whatever.rb

有关如何通过命令行执行的任何帮助都会很棒。

为了声明可执行文件,您必须在yourgem.gemspec中创建一个正确的行:

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

此行以及另一个有用的行由bundle gem yourgem命令生成。 只需执行它,然后根据您的需要修复yourgem.gemspec 将可执行文件放入gem的bin /文件夹,将所有库(包括版本)放入lib /文件夹。

下一步是使用二进制文件。 安装到系统中时,二进制文件夹会自动包含在二进制搜索路径中。 所以你的宝石可以从任何地方执行。 但是,当没有安装你的宝石,你仍然能够simelate用的情况下如下的EXEC:

 bundle exec bin/your_exec

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

要确保可执行文件能够正常工作,请使用gem build yourgem.gemspec ,然后使用gem install yourgem.gem安装它,并尝试。

我认为问题是你还没有提交你的代码。 检查git ls-files -- bin/*显示了您要执行的脚本。

当您提交文件时, git ls-files将返回它,并且规范将能够加载脚本。

查看这些博客文章: http//robdodson.me/blog/2012/06/14/how-to-write-a-command-line-ruby-gem/ http://rubylearning.com/blog/2011/01 / 03 /怎么办-我-让-一个命令行工具功能于红宝石/

我不确定你到目前为止所建的是什么,但这里有一些兴趣点:

  1. #!/usr/bin/env ruby用于可执行文件中的第一行(在/bin文件夹中)。
  2. chmod +x filname使其可执行
  3. 传递的ARGV[0]变量从ARGV[0]中检索
  4. 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) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM