[英]Ruby Gem command line tool
为了声明可执行文件,您必须在yourgem.gemspec中创建一个正确的行:
`git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
此行以及另一个有用的行由bundle gem yourgem
命令生成。 只需执行它,然后根据您的需要修复yourgem.gemspec 。 将可执行文件放入gem的bin /文件夹,将所有库(包括版本)放入lib /文件夹。
下一步是使用二进制文件。 将gem安装到系统中时,二进制文件夹会自动包含在二进制搜索路径中。 所以你的宝石可以从任何地方执行。 但是,当没有安装你的宝石,你仍然能够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 /怎么办-我-让-一个命令行工具功能于红宝石/
我不确定你到目前为止所建的是什么,但这里有一些兴趣点:
#!/usr/bin/env ruby
用于可执行文件中的第一行(在/bin
文件夹中)。 chmod +x filname
使其可执行 ARGV[0]
变量从ARGV[0]
中检索 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.