如何制作Ruby gem可执行文件

Kor*_*oys 9 ruby rubygems bundler

我可以通过调用各自的宝石的名称,例如使用像RSpec的或者Rails或撬宝石rspec,rails,pry在命令行.我如何用我创造的宝石实现这一目标?我正在使用bundler来创建基本的gem.

Kor*_*oys 9

我实际上在/bin文件夹中有我的可执行文件.

事实证明,我的问题是Bundler的gem模板太聪明了,它本身就不好,只包含已经提交给git的文件.我还没有实际提交可执行文件,所以它没有提起它:

# gemname.gemspec
gem.files         = `git ls-files`.split($\)
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,你需要做的是用`git add`索引,然后再用`bundle`索引 (4认同)
  • 不要忘记使文件可执行(`chmod + x bin/gemname`),并确保可执行文件也添加到`gemspec`中:`spec.executables = spec.files.grep(%r {^ bin /}){| f | File.basename(f)}`. (4认同)
  • 自捆绑器 1.8 起,所有应用程序的可执行文件应位于 *exe* 文件夹而不是 *bin* 内,以便 *bin* 文件夹仅包含 binstub 和仅开发可执行文件。因此 gemspec 应该有 `spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }` 和文件可执行文件 `chmod +x exe/gemname` (2认同)

Hau*_*eth 5

根据Gemspec 文件的文档,您必须将可执行文件放在bin/文件夹中。