2017-03-07 106 views
0

我有一個我用可執行文件構建的gem。可執行文件是bin目錄我的回購下,它是在gemspec文件中定義:但是我想補充這如何在路徑中設置一個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* 

spec.executables << 'my_gem' 

安裝寶石可執行也正確安裝後因此我可以沿着my_gembundle exec my_gem的行運行某些內容,以便從cli運行可執行文件。

我需要添加到我的gemspec文件才能做到這一點?

這裏是我的紅寶石版本和紅寶石寶石版本:

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

這裏是我的寶石ENV:

$ 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文件。

+0

你不需要任何東西添加到您的'gemspec',這應該已經工作了。你是如何安裝Ruby的?如果這不起作用,那麼你的'$ PATH'上可能沒有gem bin目錄。 '$ gem env'的結果也是有用的。 – matt

+0

我不知道rbenv,但我_think_您可能需要在安裝gem後運行'$ rbenv rehash'。 – matt

回答

0

寶石已正確安裝。該問題實際上是與可執行文件。

可執行我創建了這個共同的if語句結束:

if $PROGRAM_NAME == __FILE__ 
    main 
end 

要解決它,我剛剛把它改成這樣:

main 
相關問題