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):
Wenn ich jedoch require 'mygem'
in irb versuche, erhalte ich den folgenden Fehler:
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% 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:
Dies ist eine ziemlich einfache Lösung, Sie möchten vielleicht etwas flexibleres tun, wie zB Dir
glob :
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.
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.