GitHubソースからgemをインストールする方法


451

最新のGitHubソースからgemをインストールしたいと思います。

どうすればよいですか?

回答:


332

バンドラーを使用している場合は、次のようなものをGemfileに追加する必要があります。

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

また、.gemspecファイルがある場合は、実行時にgemを取得してインストールできるはずbundle installです。

UPD。コメントに示されているように、Bundlerが適切に機能するには、以下をに追加する必要もありますconfig.ru

require "bundler" 
Bundler.setup(:default)

9
私は以下も追加する必要がありました(私のconfig.ruに追加されました):require "bundler" Bundler.setup(:default)詳細については、バンドルドキュメントを参照してください
Louis Sayers

40
さらに、たとえば、ref、branch、またはtagオプションを指定できますgem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
Amit Patel '20

25
またあります:gem 'redcarpet', github: 'tanoku/redcarpet'akash.im/2012/06/05/bundler-new-github-option.html
Andrew

@AmitPatelありがとうございます!!! :branch => 'yourbranch'、あなたのthis lineは今私にとって大きな問題を解決しました。あなたにとても感謝しています。
KM Rakibul Islam 2013

3
@gaussblurinc gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :tag => 'v2.3.5'<- :tag => ''一部
Misha Reyzlin

400

まあ、それは問題のプロジェクトに依存します。一部のプロジェクトでは、ルートディレクトリに* .gemspecファイルがあります。その場合、それは

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

他のプロジェクトには、「gem」や「build」などのレーキタスクがあります。この場合、「rake」を呼び出す必要がありますが、プロジェクトによって異なります。

どちらの場合も、ソースをダウンロードする必要があります。


2
ありがとう-完璧な答え。
Jon Schoning、2012年

20
それが実際に起こっていることを人々に知らせるためのヒントです。このgemname-version.gemファイルは、起動時に作成されますgem build
開発を待機しています...

どこんgem install gemname-version.gemコマンドは、ローカルのgit宝石をインストールしますか?この方法でインストールされたエンジンgemがローカルマシンのどこにも見つかりません。bundlerはそれをどこに隠しますか?
グリーン

2
gem install gemname-version.gemラインはそうあるべきだと思いますgem install --local gemname-version.gem
JonB

@Green- gem which gemname特定の宝石がどこにあるかを教えてください、それはあなたにとってうまくいきませんか?
2014

255

specific_install gemを試してください。githubリポジトリ( 'edge'など)から、または任意のURLからgemをインストールできます。宝石をフォークしたり、複数のマシンなどでそれらをハッキングしたりするのに非常に便利です。

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

例えば

gem specific_install https://github.com/githubsvnclone/rdoc.git 

3
specific_install宝石の説明を追加できますか?
microspino 2012

1
これはまさに私が探していたもので、Pythonのpip gitサポートに似ています。gem specific_install -l <​​githubのプロジェクトへのURL>は魅力的でした!
Murph、2012年

1
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module とてもクールに聞こえますが、これ以上詳しくは説明しません。他の誰かがSOの推奨に基づいてそれを試そうとしている場合に備えて、それが私にとってうまくいかなかったことを投稿したかっただけです。
同型写像

1
@isomorphismes +1あなたのコメント。:私はここでそのエラーについての個別のご質問に作成stackoverflow.com/questions/27045874/...
ラ- comadreja

1
これは命の恩人です!ありがとうございます。
Noldorin

34

Bundlerを使用すると、Gitリポジトリから直接Gemを使用できます。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'

詳細については、https: //bundler.io/v2.0/guides/git.htmlを参照してください


おそらく最良の答え
アントンセメニチェンコ2018年

このアプローチをパッセンジャーとapache / ngixで使用すると、問題が発生する可能性があることに注意してください。を実行するとbundle、そのようなgit-gem-依存関係はグローバルにインストールされず、代わりに現在のユーザーのホームディレクトリにインストールされます。Passengerはwww-data、このディレクトリにアクセスできないWebサーバーのユーザー(例:)としてルビーを実行するため、この「git-gem」はロードされません。エラーが発生します... is not yet checked out. Run bundle install first
フィッシュボーン

16

OBSOLETE(コメントを参照)

プロジェクトがgithubからのものであり、http ://gems.github.com/list.htmlのリストに含まれている場合は、githubリポジトリをgemsソースに追加してインストールできます。

$ gem sources -a http://gems.github.com
$ sudo gem install username-projectname

1
オリー?私はたった今これを行い、それはうまくいきました... yrソースに追加する前に、gems.github.comに移動すると思いますか?(ただし、sudoは使用しないでください)
esharp

7
@esharp、彼らは彼らが構築したものをホストしますが、彼らはもはやそれらを構築しません。2009年以降に gemが更新された場合、gems.github.comのコピーは廃止されます。
東武


4

またできます gem install username-projectname -s http://gems.github.com


6
廃止されました。他の回答のコメントを参照してください。
Lee Hambley 2013

1
古いコードベースの問題を解決するのに役立ちました。はい、2013年です。rails2.3.4プロジェクトに取り組んでいます。
Vivek Sampara 2013

4

Gemfileに以下を追加します。

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

ref、branch、tagオプションを追加することもできます。

たとえば、特定のブランチからダウンロードしたい場合:

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

次に実行します:

bundle install

3

gryzzlyで提案されているようにbundlerを使用してインストールし、gemがバイナリを作成する場合bundle exec mygembinaryは、gemが通常のgemパスでは表示されないbundlerディレクトリに格納されているので、必ず実行してください。


2

新しいLinuxマシンでは、もインストールする必要がありますgit。Bundleはそれを舞台裏で使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.