我可以通过调用 RSpec 或 Rails 或 Pry 等 Gem 各自的 Gem 名称来使用它们,例如命令行上的
rspec
、rails
、pry
。如何使用我创建的宝石实现这一目标?我正在使用捆绑器进行基本的 gem 创建。
实际上我的可执行文件位于
/bin
文件夹中。
原来我的问题是,bundler 的 gem 模板太智能了,不利于它本身的好处,并且仅包含已提交到 git的文件。我实际上还没有提交可执行文件,所以它没有拾取它:
# gemname.gemspec
gem.files = `git ls-files`.split($\)
根据 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。