2016-07-01 10 views
2

Die RubyGems site macht es ziemlich einfach, einen privaten Edelstein-Server zu betreiben!Private Juwel Server - Abhängigkeiten nicht auf dem Server gefunden (404)

Meine Testkonfiguration ist wie folgt: Eine AWS EC2-Instanz ist meine Workstation, und ich habe eine andere Einrichtung, um der Edelstein-Server zu sein.

Auf der Edelstein-Server-Instanz habe ich den pry Edelstein installiert. Wenn ich gem server für diese Instanz ausführen und das öffentliche DNS in meinem Webbrowser aufrufen, kann ich pry und alle Abhängigkeiten in der Liste der Edelsteine ​​sehen.

Auf meinem Arbeitsplatz habe ich ein gefälschtes App-Verzeichnis mit einem einfachen Gemfile erstellt:

source "http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808" 

gem "pry" 

Scheint einfach genug! Aber wenn ich bundle install auf der Workstation laufen bekomme ich folgende Fehlermeldung:

[[email protected] my_app]$ bundle 
Fetching source index from http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/ 
Resolving dependencies... 

Gem::RemoteFetcher::FetchError: bad response Not Found 404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/coderay-1.1.1.gem) 

Gem::RemoteFetcher::FetchError: bad response Not Found 404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/method_source-0.8.2.gem) 

Gem::RemoteFetcher::FetchError: bad response Not Found 404 (http://ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com:8808/gems/slop-3.6.0.gem) 
Using bundler 1.12.5 
An error occurred while installing coderay (1.1.1), and Bundler cannot continue. 
Make sure that `gem install coderay -v '1.1.1'` succeeds before bundling. 

So scheint es, zu erkennen, pry verfügbar ist, aber die Abhängigkeiten, beginnend mit coderay, werden nicht gefunden (404 Fehler).

Ich habe mit der --dir Flagge getüftelt, wenn gem server ausgeführt, so dass es wie folgt aussieht:

gem server --dir=/home/ec2-user/.gem/ruby/2.0 --dir=/usr/share/ruby/gems/2.0 --dir=/home/ec2-user/.gem/ruby/2.0/cache/

... und ich habe auch in diese Verzeichnisse gegangen und laufen gem generate_index wie ich empfohlen sah auf einer anderen Frage, aber ich bin immer noch nicht in der Lage, pry auf meiner Arbeitsstation mit diesem privaten Server als source zu installieren.

Gibt es etwas, was ich vermisse?

Antwort

0

Fast jedes Juwel hängt von anderen Edelsteinen ab. Wenn du Edelsteine ​​nur von einem privaten Schmuckstück-Server installieren willst und du nicht den Standard-Server unter als Fallback verwenden kannst, musst du sicherstellen, dass alle anderen Edelsteine ​​in den richtigen Versionen auch auf deinem privaten Edelstein-Server verfügbar sind .

Sie können the pry page on rubygems überprüfen, um seine Abhängigkeiten zu sehen. Derzeit pry ('0.10.3') ist abhängig von:

  • coderay ('~> 1.0.0')
  • method_source ('~> 0.8.1')
  • slot ('~> 3.4')

diese Abhängigkeit auch auf Ihrem privaten gem Server zur Verfügung stellen, die Gem::RemoteFetcher::FetchError: bad response Not Found 404 Fehler für diese Edelsteine ​​zu entfernen.

In einem nächsten Schritt können Sie tiefer zu graben brauchen würde und machen alle Edelsteine ​​zur Verfügung diese drei Edelsteine ​​sind abhängig von: coderay keine externen Abhängigkeiten hat, aber method_source einige hat, installieren Sie sie auch. Fortfahren, bis keine Edelsteine ​​mehr fehlen, die sich im Abhängigkeitsbaum befinden.

+1

Ja, ich weiß, dass alle Abhängigkeiten auch auf meinem Edelstein-Server sein müssten. Offensichtlich befinden sich 'coderay' und die anderen unmittelbaren Abhängigkeiten von' pry' auf meinem Server; Sonst wäre 'heb 'nicht installiert. Die Frage ist also: Warum wird 'coderay' nicht gefunden? – sixty4bit