我正在编写我的第一颗红宝石宝石,而且我在设置宝石的整个结构上有点新鲜。我从阅读this guide的理解是,为了为我的gem创建可执行文件,我需要执行以下操作:
在我的gemspec中添加一行,指定可执行文件的名称,如下所示:
s.executables << 'gemname'
使用
构建gem gem build gemname.gemspec
在本地安装gem(如果你尝试通过推送rubygems进行安装,每次你不得不经常更改版本)
gem install gemname-0.0.1.pre.gem
然后用
测试一下 gemname foo-arguments, --bar-options
如果我在#4上完成所有这些步骤,我会收到以下错误:
$ gemname
zsh: command not found: gemname
假设可执行文件以shebang开头并位于gemname / bin / gemname
如果我导航到gem文件夹的根目录并运行bin / gemname来测试可执行文件,那么一切正常。
答案 0 :(得分:4)
您需要在spec.files
中添加gem中需要包含的所有文件。您错过了添加bin
目录中的文件。
例如,我从one of my gems获得了以下配置:
Gem::Specification.new do |spec|
spec.files = Dir["{bin,lib}/**/*", "LICENSE", "README.md"]
spec.test_files = Dir["spec/**/*"]
spec.require_paths = ["lib"]
spec.executables = ["yarr"]
end
答案 1 :(得分:2)
您的gemspec正在尝试更改加载路径。我建议先修复它,因为你报告的内容似乎与宝石无法找到其文件一致。
请查看您的gemspec以获取此代码:
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
然后查看http://guides.rubygems.org/patterns/
“Gems不应该更改$ LOAD_PATH变量.RubyGems会为你管理这个。像这样的代码不应该......”
有关使用现有加载路径加载的各种解决方案以及require_relative
等帮助程序,请参阅http://guides.rubygems.org/patterns/。
答案 2 :(得分:0)
此外,您需要确保您的可执行文件是可执行的。
$ chmod a+x bin/gemname
否则在构建gem之后命令将不可用。