【发布时间】:2012-10-20 15:32:46
【问题描述】:
我可以通过调用它们各自的 gem 名称来使用像 RSpec 或 Rails 或 Pry 这样的 gem,例如rspec、rails、pry 在命令行上。如何使用我创建的宝石实现这一目标?我正在使用 bundler 来创建基本的 gem。
【问题讨论】:
-
把你的可执行文件放在你 gem 的 bin/ 文件夹中
我可以通过调用它们各自的 gem 名称来使用像 RSpec 或 Rails 或 Pry 这样的 gem,例如rspec、rails、pry 在命令行上。如何使用我创建的宝石实现这一目标?我正在使用 bundler 来创建基本的 gem。
【问题讨论】:
我实际上在/bin 文件夹中有我的可执行文件。
原来我的问题是 bundler 的 gem 模板太聪明了,它只包含已提交给 git 的文件。我实际上还没有提交可执行文件,所以它没有把它捡起来:
# gemname.gemspec
gem.files = `git ls-files`.split($\)
【讨论】:
git add 索引它,然后再用bundle 索引
chmod +x bin/gemname),并确保将可执行文件也添加到您的gemspec:spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }。
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } 和文件可执行文件 chmod +x exe/gemname
According to documentation 的 Gemspec 文件,您必须将可执行文件放在 bin/ 文件夹中。
【讨论】:
要使您的 gem 在 CLI 中可执行,您应该进行以下设置。
bin 文件夹中,例如bin/hello
chmod u+x bin/hello)hello.gemspec)spec.files = `git ls-files -Z`.split("\x0")
spec.bindir = 'bin'
spec.executables << 'hello'
spec.executables 将 bin 视为二进制文件和可执行文件的默认文件夹,但您可以更改它。
您可以在此处找到相关文档:Gemspec#executables。
【讨论】: