Wie installiere ich gem von GitHub source?


451

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

Wie mache ich das?

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)

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.


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 

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: 'git@github.com:dideler/foo.git'
gem 'foo', git: 'git://github.com/dideler/foo.git'

# Specify a tag, ref, or branch to use
gem 'foo', git: 'git@github.com:dideler/foo.git', tag: 'v2.1.0'
gem 'foo', git: 'git@github.com:dideler/foo.git', ref: '4aded'
gem 'foo', git: 'git@github.com: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


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

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'

4

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


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

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.


2

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.