如何在路径中设置gem二进制文件?

时间:2017-03-07 18:47:22

标签: ruby rubygems

我有一个用可执行文件构建的gem。可执行文件位于我的repo的bin目录下,它在gemspec文件中定义:

  spec.executables   << 'my_gem'

安装gem后,可执行文件也正确安装:

$ ls /Users/myuser/.gems/gems/my_gem-1.0.0/
bin/ lib/
$ ls /Users/myuser/.gems/gems/my_gem-1.0.0/bin/
my_gem* 

但是我想在路径中添加此可执行文件,以便我可以运行my_gembundle exec my_gem的某些内容来运行cli中的可执行文件。

我需要添加到我的gemspec文件中才能执行此操作?

这是我的ruby版本和ruby gems版本:

$ ruby -v
ruby 2.1.1p76
$ gem -v
2.2.2

这是我的宝石环境:

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.1 (2014-02-24 patchlevel 76) [x86_64-darwin15.0]
  - INSTALLATION DIRECTORY: /Users/myuser/.gems
  - RUBY EXECUTABLE: /Users/myuser/.rbenv/versions/2.1.1/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/myuser/.gems/bin
  - SPEC CACHE DIRECTORY: /Users/myuser/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-15
  - GEM PATHS:
     - /Users/myuser/.gems
     - /Users/myuser/.gem/ruby/2.1.0
     - /Users/myuser/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["https://rubygems.org/", "https://my.org.url/artifactory/api/gems/gem-public/"]
  - REMOTE SOURCES:
     - https://rubygems.org/
     - https://my.org.url/artifactory/api/gems/gem-public/
  - SHELL PATH:
     - /Users/myuser/.rbenv/versions/2.1.1/bin
     - /usr/local/Cellar/rbenv/1.0.0/libexec
     - /Users/myuser/.rbenv/shims
     - /Users/myuser/.rbenv/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin

奇怪的是,我已经使用gem tutorial创建了一个不同的宝石,并且效果很好。

更新:出于某种原因进行调试时,它会运行lib/my_gem.rb文件而不是bin/my_gem文件。

1 个答案:

答案 0 :(得分:0)

宝石已正确安装。问题实际上是可执行文件。

我创建的可执行文件以这个常见的if语句结束:

if $PROGRAM_NAME == __FILE__
  main
end

为了解决这个问题,我只需将其更改为:

main