Einen Ruby Gem erstellen - Diese Datei kann nicht geladen werden

8

Ich versuche ein Ruby-Juwel zu erstellen, indem ich die Anweisungen in Ссылка verwende. Folgendes scheint zu funktionieren und eine * .gem-Datei wird generiert.

%Vor%

Das Folgende scheint ebenfalls erfolgreich zu sein (nur wenn mit sudo vorangestellt ist):

%Vor%

Wenn ich jedoch require 'mygem' in irb versuche, erhalte ich den folgenden Fehler:

%Vor%

Ich habe ähnliche Fehler bei Stackoverflow gesehen, konnte aber nicht herausfinden, was in meiner speziellen Situation schief läuft. Ich kann andere Edelsteine ​​(nicht meine) ohne Probleme verlangen. Mein Schmuckstück wird in der Ausgabe von gem list angezeigt, aber es wird nicht mit require geladen.

FWIW Ich benutze rbenv, was für mich brandneu ist.

Hier ist die Ausgabe von gem env :

  • RUBYGEMS VERSION: 2.4.5

    • RUBIN VERSION: 2.1.5 (2014-11-13 Patchlevel 273) [x86_64-darwin14.0]

    • INSTALLATIONSVERZEICHNIS: /Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0

    • RUBY EXECUTABLE: /Users/speersj/.rbenv/versions/2.1.5/bin/ruby

    • Ausführbares Verzeichnis: /Users/speersj/.rbenv/versions/2.1.5/bin

    • SPEC CACHE VERZEICHNIS: /Users/speersj/.gem/specs

    • SYSTEMKONFIGURATIONSVERZEICHNIS: /Users/speersj/.rbenv/versions/2.1.5/etc

    • RUBYGEMS-PLATTFORMEN:

    • Rubin

    • x86_64-darwin-14

    • GEM PFADE:

      • /Users/speersj/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0

      • /Users/speersj/.gem/ruby/2.1.0

    • GEM KONFIGURATION:

      • : update_sources = & gt; wahr

      • : verbose = & gt; wahr

      • : zurückverfolgen = & gt; falsch

      • : bulk_threshold = & gt; 1000

    • REMOTE QUELLEN:

    • SHELL PFAD:

      • /Users/speersj/.rbenv/versions/2.1.5/bin

      • /Users/speersj/.rbenv/libexec

      • /Users/speersj/.rbenv/plugins/ruby-build/bin

      • /Users/speersj/.rbenv/shims

      • /Users/speersj/.rbenv/bin

      • /Library/Frameworks/Python.framework/Versions/3.4/bin

      • / usr / local / bin

      • / usr / local / sbin

      • / usr / lokal / heroku / bin

      • / usr / local / bin

      • / usr / bin

      • / bin

      • / usr / sbin

      • / sbin

      • / usr / local / bin

      • / usr / lokal / smlnj / bin

Gemspec:

%Vor%     
speersj 06.01.2015, 01:26
quelle

3 Antworten

14

Der spec.files -Eintrag von gemspec enthält nicht die mygem.rb -Datei, so dass diese Datei nicht in dem Gem enthalten ist, wenn sie erstellt wird. Nur die in diesem Eintrag aufgelisteten Dateien werden in das letzte Juwel aufgenommen.

Die einfachste Lösung wäre, einfach mygem.rb zum Array hinzuzufügen:

%Vor%

Dies ist eine ziemlich einfache Lösung, Sie möchten vielleicht etwas flexibleres tun, wie zB Dir glob :

%Vor%

Tatsächlich empfiehlt der RubyGems-Guide, dass Sie so etwas tun (Text ist vom Ende dieses Abschnitts):

  

Wenn du deinem Juwel mehr Dateien hinzugefügt hast, achte darauf, sie vor dem Veröffentlichen eines neuen Edelsteins dem Array deiner Gemspec-Dateien hinzuzufügen! Aus diesem Grund (unter anderem) automatisieren viele Entwickler dies mit Hoe , Juwelier , Rake , Bundler , oder nur eine dynamische Gemspec .

Außerdem müssen Sie Ihr Berechtigungsproblem wirklich beheben, Sie sollten sudo nicht benötigen, um Edelsteine ​​zu installieren in Ihr eigenes Heimverzeichnis.

    
matt 06.01.2015, 13:59
quelle
2

Sie können sudo nicht verwenden, um ein Juwel bei der Verwendung von rbenv (oder RVM) zu installieren, mit Ausnahme der Installationen vom Typ "multi-user" oder "system-wide", die spezialisiert und sehr selten bei normalen / normalen Benutzern sind sollte verwenden.

sudo eskaliert Ihre Rechte an root, und root kennt die Rubies in der rbenv-Umgebung eines Benutzers nicht. Daher verwendet root das Standardsystem Ruby, mit dem die Dateien dort installiert werden.

Verwenden Sie stattdessen eine einfache gem install , die das Richtige tut.

    
the Tin Man 06.01.2015 06:20
quelle
0

Stellen Sie sicher, dass Sie alle geänderten Dateien in Github Repo hinzugefügt haben, bevor Sie Ihr Schmuckstück erstellen. Installieren Sie dann das Build-Schmuckstück.

    
SaraVanaN 06.01.2015 14:30
quelle

Tags und Links