Wie installiere ich gem von GitHub source?

451

Ich möchte gem von der neuesten GitHub-Quelle installieren.

Wie mache ich das?

Vojto
quelle

Antworten:

332

Wenn Sie einen Bundler verwenden, müssen Sie Ihrem Gemfile Folgendes hinzufügen:

gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git'

Und falls es eine .gemspecDatei gibt, sollte sie in der Lage sein, den Edelstein beim Ausführen abzurufen und zu installieren bundle install.

UPD. Wie in den Kommentaren angegeben, müssen Sie Folgendes hinzufügen, damit Bundler ordnungsgemäß funktioniert config.ru:

require "bundler" 
Bundler.setup(:default)
Mischa Reyzlin
quelle
9
Ich muß auch die folgenden (hinzugefügt meine config.ru) hinzuzufügen: require "bundler" Bundler.setup(:default)Siehe bundler docs für weitere Details
Louis Sayers
40
Zusätzlich kann man beispielsweise Ref-, Verzweigungs- oder Tag-Optionen angebengem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
Amit Patel
25
es gibt auch : gem 'redcarpet', github: 'tanoku/redcarpet'. akash.im/2012/06/05/bundler-new-github-option.html
Andrew
@AmitPatel Vielen Dank !!! : branch => 'yourbranch', deine diese Zeile hat gerade ein großes Problem für mich gelöst. So dankbar für dich.
KM Rakibul Islam
3
@ Gaussblurinc gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :tag => 'v2.3.5'<- der :tag => ''Teil
Misha Reyzlin
400

Nun, das hängt vom jeweiligen Projekt ab. Einige Projekte haben eine * .gemspec-Datei im Stammverzeichnis. In diesem Fall wäre es

gem build GEMNAME.gemspec
gem install gemname-version.gem

Andere Projekte haben eine Rake-Aufgabe, die als "Edelstein" oder "Build" oder ähnliches bezeichnet wird. In diesem Fall müssen Sie "Rake" aufrufen, dies hängt jedoch vom Projekt ab.

In beiden Fällen müssen Sie die Quelle herunterladen.

Dominik Honnef
quelle
2
Danke - perfekte Antwort.
Jon Schoning
20
Nur ein Tipp, um die Leute wissen zu lassen, was wirklich passiert. Die gemname-version.gemDatei wird beim Aufrufen erstelltgem build
Warten auf Dev ...
Wo gem install gemname-version.geminstalliert der Befehl das Git-Juwel lokal? Ich kann nirgendwo auf meiner lokalen Maschine einen Motor finden, der auf diese Weise installiert wurde. Wo versteckt Bundler es?
Green
2
Ich denke, die gem install gemname-version.gemLinie sollte seingem install --local gemname-version.gem
JonB
@Green - gem which gemnamesollte dir sagen, wo sich ein bestimmtes Juwel befindet, funktioniert das nicht für dich?
Sameers
255

Versuchen Sie, den specific_install gem es Ihnen ermöglicht es Ihnen , ein Juwel zu installieren aus , von seiner Github - Repository (wie ‚Kante‘) oder von einer beliebigen URL. Sehr nützlich, um Edelsteine ​​zu forken und auf mehreren Maschinen und dergleichen zu hacken.

gem install specific_install
gem specific_install -l <url to a github gem>

z.B

gem specific_install https://github.com/githubsvnclone/rdoc.git 
Kamek
quelle
3
Könntest du dem specific_installEdelstein mehr Erklärungen hinzufügen ?
microspino
1
Dies ist genau das, wonach ich gesucht habe, ähnlich wie Pythons Pip-Git-Unterstützung. gem spezifisch_install -l <URL auf Github projizieren> hat wie ein Zauber funktioniert!
Murph
1
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module Klingt sehr cool, aber ich werde nicht weiter darauf eingehen. Ich wollte nur posten, dass es bei mir nicht funktioniert hat, falls jemand anderes es auf der Grundlage der SO-Empfehlung ausprobieren möchte.
Isomorphismen
1
@isomorphismes +1 zu deinem Kommentar. Ich habe hier eine separate Frage zu diesem Fehler erstellt: stackoverflow.com/questions/27045874/…
La-comadreja
1
Das ist ein Lebensretter! Danke mein Herr.
Noldorin
34

Mit Bundler können Sie Edelsteine ​​direkt aus Git-Repositories verwenden. In Ihrer Gemfile:

# Use the http(s), ssh, or git protocol
gem 'foo', git: 'https://github.com/dideler/foo.git'
gem 'foo', git: '[email protected]:dideler/foo.git'
gem 'foo', git: 'git://github.com/dideler/foo.git'

# Specify a tag, ref, or branch to use
gem 'foo', git: '[email protected]:dideler/foo.git', tag: 'v2.1.0'
gem 'foo', git: '[email protected]:dideler/foo.git', ref: '4aded'
gem 'foo', git: '[email protected]:dideler/foo.git', branch: 'development'

# Shorthand for public repos on GitHub (supports all the :git options)
gem 'foo', github: 'dideler/foo'

Weitere Informationen finden Sie unter https://bundler.io/v2.0/guides/git.html

Dennis
quelle
wahrscheinlich die beste Antwort
Anton Semenichenko
Bitte beachten Sie, dass Sie möglicherweise Probleme bekommen, wenn Sie diesen Ansatz mit Passagier und Apache / Ngix verwenden. bundleWährend der Ausführung werden solche Git-Gem-Abhängigkeiten nicht global installiert, sondern im Home-Verzeichnis des aktuellen Benutzers. Der Passagier führt Ruby als Benutzer Ihres Webservers aus (z. B. www-data), der keinen Zugriff auf dieses Verzeichnis hat, und daher wird dieses "Git-Gem" nicht geladen. Sie erhalten eine Fehlermeldung ... is not yet checked out. Run bundle install first.
Fishbone
16

OBSOLETE (siehe Kommentare)

Wenn das Projekt von github stammt und in der Liste unter http://gems.github.com/list.html enthalten ist , können Sie das github-Repo einfach zu den Edelsteinquellen hinzufügen, um es zu installieren:

$ gem sources -a http://gems.github.com
$ sudo gem install username-projectname
Michael Pereira
quelle
1
o rly? Ich habe das gerade getan und es hat funktioniert ... gehe zu gems.github.com, bevor ich es deinen Quellen hinzufüge, denke ich? (aber nicht sudo verwenden)
esharp
7
@esharp, sie hosten die, die sie gebaut haben, aber sie bauen sie nicht mehr. Wenn der Edelstein seit 2009 aktualisiert wurde , ist eine Kopie von gems.github.com veraltet.
Tobu
13

Wenn Sie Ihre Edelsteine ​​aus einem öffentlichen GitHub-Repository beziehen, können Sie die Kurzform verwenden

gem 'nokogiri', github: 'tenderlove/nokogiri'
Rajeev Kannav Sharma
quelle
4

Das kannst du auch gem install username-projectname -s http://gems.github.com

Chuck Vose
quelle
6
Veraltet, siehe die Kommentare der anderen Antwort.
Lee Hambley
1
Hat mir trotzdem bei einem Problem mit einer alten Codebasis geholfen. Ja, es ist 2013 und ich arbeite an einem Rails 2.3.4-Projekt.
Vivek Sampara
4

Fügen Sie in Ihrer Gemfile Folgendes hinzu:

gem 'example', :git => 'git://github.com/example.git'

Sie können auch Ref-, Verzweigungs- und Tag-Optionen hinzufügen.

Zum Beispiel, wenn Sie von einem bestimmten Zweig herunterladen möchten:

gem 'example', :git => "git://github.com/example.git", :branch => "my-branch"

Dann renne:

bundle install
Slal
quelle
3

Wenn Sie mit Bundler installieren, wie von gryzzly vorgeschlagen, und der Edelstein eine Binärdatei erstellt, stellen Sie sicher, dass Sie ihn ausführen, bundle exec mygembinaryda der Edelstein in einem Bundler-Verzeichnis gespeichert ist, das auf dem normalen Edelsteinpfad nicht sichtbar ist.

Mark Cheverton
quelle
2

Auf einem neuen Linux-Computer müssen Sie ebenfalls installieren git. Bundle nutzt es hinter den Kulissen.

user1208639
quelle