2017-03-07 7 views
0

Ich habe ein Juwel, das ich mit einer ausführbaren Datei erstellt habe. Die ausführbare Datei ist unter dem bin Verzeichnis meiner Repo- und es ist in der gemspec-Datei definiert:Wie setze ich eine Edelstein-Binärdatei in den Pfad?

spec.executables << 'my_gem' 

Nach dem Juwel der Installation die ausführbare Datei auch korrekt installiert ist:

$ 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* 

Jedoch habe ich diese hinzufügen möchten ausführbar in dem Pfad, so kann ich etwas in den Zeilen von my_gem oder bundle exec my_gem ausführen, um die ausführbare Datei von der CLI auszuführen.

Was muss ich zu meiner Gemspec-Datei hinzufügen, um dies zu tun?

Hier ist meine Ruby-Version und Rubin Edelsteine ​​Versionen:

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

Hier ist mein Juwel 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 

Die seltsame Sache ist, dass ich das schon mit einem anderen Stein habe ich versucht, mit erstellt die gem tutorial und das funktioniert gut.

Update: Wenn diese Debuggen aus irgendeinem Grund läuft die lib/my_gem.rb Datei anstelle der bin/my_gem Datei.

+0

Sie brauchen nichts hinzufügen, um Ihr 'Gemspec', das sollte schon funktionieren. Wie hast du Ruby installiert? Wenn dies nicht funktioniert, haben Sie wahrscheinlich nicht das Verzeichnis "gem bin" auf Ihrem "$ PATH". Die Ergebnisse von $ edgem env wären ebenfalls hilfreich. – matt

+0

Ich kenne rbenv nicht, aber ich _think_ müssen Sie '$ rbenv rehash' nach der Installation des Edelsteins ausführen. – matt

Antwort

0

Der Edelstein wurde ordnungsgemäß installiert. Das Problem liegt tatsächlich bei der ausführbaren Datei.

Die ausführbar ich mit dieser gemeinsamen if-Anweisung beendet erstellt:

if $PROGRAM_NAME == __FILE__ 
    main 
end 

es beheben musste ich es einfach, dies zu ändern:

main 
Verwandte Themen