NoMethodError mit Ruby bei der Installation des SoundCloud 2000-Clients für CLI

457
Alison

Ich versuche, SoundCloud2000 auf meinem MacBook mit Mac OS X 10.8.5 zu installieren .

Ich habe Ruby 2.2.0 mpg123und portaudioinstalliert. Die Installation von SoundCloud 2000 als GEM scheint gut zu funktionieren:

gem install soundcloud2000 

Aber wenn ich versuche, es von der Befehlszeile aus zu verwenden, wenn ich ausgeführt werde, bekomme $soundcloud2000ich folgende Fehlermeldung anstelle des Clients:

/Library/Ruby/Gems/1.8/gems/soundcloud2000-0.1.0/lib/soundcloud2000.rb:1: undefined method `require_relative' for main:Object (NoMethodError) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' from /Library/Ruby/Gems/1.8/gems/soundcloud2000-0.1.0/bin/soundcloud2000:3 from /usr/bin/soundcloud2000:19:in `load' from /usr/bin/soundcloud2000:19 

Ich weiß nicht was das bedeutet. Weiß noch jemand?

1

1 Antwort auf die Frage

0
JakeGould

Sie sagen, Sie haben Ruby 2.2.0 installiert, aber wenn Sie sich den Fehler ansehen, beziehen sich alle Referenzen darauf, /Library/Ruby/Gems/1.8/gems/was bedeutet, dass SoundCloud 2000 als Ruby 1.8-GEM installiert ist. Meine Vermutung ist jedoch, dass Sie Ruby 2.2.0 installiert haben, das nicht das Hauptprogramm ist, das rubySie von der Befehlszeile aus ausführen. Sie können die Version von Ruby, die Sie auf Ihrem Mac ausführen, mit dem folgenden Befehl bestätigen:

ruby -v 

Die Ausgabe sollte ungefähr so ​​sein; Hinweis: Ich verwende Mac OS X 10.9.5, daher wird meine installierte Version von Ruby höher sein als Mac OS X 10.8.5:

ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13] 

Sie können auch sehen, von wo aus Ihre Version von Ruby geladen wird which:

which ruby 

Die Ausgabe sollte ungefähr so ​​aussehen:

/usr/bin/ruby 

Das whichTool sagt Ihnen genau, von welchem ​​Pfad die Binärdatei, die Sie über diesen Befehl aufrufen, geladen wird.

Da es so aussieht, als würden Sie Homebrew verwenden, um eine neuere Version von Rub zu installieren, müssen Sie auch sicherstellen, dass Ihr Benutzer vor der Überprüfung $PATHeine Überprüfung /usr/local/binvornimmt /usr/bin. Dies wird normalerweise in der .bash_profileDatei in Ihrem Home-Verzeichnis festgelegt, die sich über befindet ~/.bash_profile. Beachten Sie nur, dass dieses Zeug könnte auch in einer Datei mit dem Namen gesetzt werden .bashc, so stellen Sie die Beispiele zu verwenden, .bashcstatt, .bash_profilewenn das der Fall ist .

Wenn ich beispielsweise den folgenden Befehl in meinem Mac OS X-Setup ausführe:

cat ~/.bash_profile 

Ich sehe diesen Inhalt:

export PATH="/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/opt/ImageMagick/bin" 

Könnte komplex aussehen, ist es aber nicht. Dieser Befehl kann nur die $PATHEinstellungen für Ihre Shell-Umgebung festlegen . Die Elemente zwischen den Anführungszeichen sind lediglich Verzeichnispfade, die durch :Zeichen getrennt sind . Beachten Sie dies die Reihenfolge von /usr/binversus /usr/local/bin; einer kommt vor den anderen. Was im Grunde bedeutet, dass das System für die Überprüfung wird rubyin /usr/binund es vorziehen, dass man verwenden, bevor sie sogar die erreicht rubyüber installiert /usr/local/bin. Eine schnelle Lösung für Sie wäre es also, /usr/local/bindiese /usr/binüber einen Texteditor wie nano. Dann speichern Sie es, beenden Sie Ihre Terminalsitzung und öffnen Sie eine neue.

Wenn ich Sie wäre, würde ich jedoch empfehlen, die Installation von Ruby und Ruby GEM auf Systemebene über Homebrew zu vermeiden und stattdessen RVM (Ruby Version Manager) zu verwenden. Ruby - und Ruby GEMs - können an einem guten Tag tatsächlich ein Problem sein. und noch schlimmer Kopfschmerzen auf einem Mac. Wenn Sie stattdessen RVM verwenden, können Sie isolierte Ruby- und Ruby-GEM-Installationen erstellen, die für Ihren Benutzer spezifischer sind und die einfacher zu verwalten sind.

Ich mache Linux-Systemadministration und möchte in der Regel die Version von Ruby aktualisieren, die standardmäßig installiert ist und die dazu über Quell- oder Paketinstallationsprogramme verwendet wird. Aber je mehr Arbeit ich mit Ruby-Setups habe, desto mehr wurde mir klar, dass RVM wirklich die beste Möglichkeit ist, um Ruby-Setups zu installieren, zu verwalten und damit umzugehen. Eine leichte Lern- / Verständniskurve, wenn Sie es zum ersten Mal einrichten, aber es wird Ihnen das Leben und die Systemverwaltung leichter machen.

Du hast Recht, @jakegould, das besagt, dass ich Ruby 1.8.7 verwende. Ich versuche, die neuere Version jetzt mit `brew install ruby ​​'zu installieren Alison vor 9 Jahren 1
@Alison Bingo! Sehen Sie sich meine letzte Bearbeitung an, wo ich erkläre, wie Sie dies beheben können, indem Sie Ihren "$ PATH" am System anpassen. Ich empfehle außerdem, Homebrew für solche Ruby-Sachen zu vermeiden und stattdessen RVM (Ruby Version Manager) zu verwenden. JakeGould vor 9 Jahren 0
@Alison Es tut mir leid, dass Sie auf diese Probleme stoßen, aber das Versenden von Fehlermeldungen wie diesen in Kommentaren ist schlecht. Nicht lesbar und schwer zu verwalten. Es ist besser, wenn Sie Ihre Frage ändern, um Ihre neuen Herausforderungen und Probleme bei der Installation von SoundCloud 2000 zu veröffentlichen. JakeGould vor 9 Jahren 0
oh okay, tut mir leid, werde @jakegould Alison vor 9 Jahren 0
Wenn Sie jetzt Ruby 2.2.0 verwenden, müssen Sie `mpg123` und` portaudio` neu installieren, damit Ruby 2.2.0 anstelle von 1.8.7 verwendet wird. Bitte überprüfen Sie diese Fehlerbesprechung auch im offiziellen Repository von SoundCloud2000. https://github.com/grobie/soundcloud2000/issues/69 JakeGould vor 9 Jahren 0
Ahhh, ausgezeichnet, das ist das genaue Problem, das ich habe. Vielen Dank für Ihre Hilfe, @jakegould, es ist von unschätzbarem Wert !! Alison vor 9 Jahren 0
@Alison Gern geschehen! Glücklich geholfen zu haben. Wenn meine Antwort für Sie hilfreich war, denken Sie bitte daran, sie zu bestätigen. Und wenn dies die Antwort ist, die Ihr Problem gelöst hat, aktivieren Sie es bitte als solche, wenn Sie können. JakeGould vor 9 Jahren 0
danke @jakegould, ich kann es nicht bestätigen, weil ich nicht lange genug auf stackexchange bin / nicht den Ruf habe, zu stimmen, aber ich habe es abgehakt. Nochmals vielen Dank für all Ihre Hilfe! Alison vor 9 Jahren 1