如何从GitHub源码安装gem?


451

我想从最新的GitHub来源安装gem。

我该怎么做呢?

Answers:


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 2012年

25
这里还有:gem 'redcarpet', github: 'tanoku/redcarpet'akash.im/2012/06/05/bundler-new-github-option.html
Andrew

@AmitPatel非常感谢你!!!:branch =>'yourbranch',您的这一行对于我而言已经解决了一个大问题。非常感谢您。
KM拉基布尔伊斯兰教2013年

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

400

好吧,这取决于所讨论的项目。某些项目的根目录中有一个* .gemspec文件。在这种情况下,

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

其他项目有一个rake任务,称为“ gem”或“ build”或类似的项目,在这种情况下,您必须调用“ rake”,但这取决于项目。

在这两种情况下,您都必须下载源代码。


2
谢谢-完美的答案。
乔恩·舍宁

20
只是一个提示,让人们知道它的实际发生。在gemname-version.gem调用时,文件被创建gem build
等待开发......

gem install gemname-version.gem命令在本地哪里安装git gem?我在本地计算机的任何地方都找不到以这种方式安装的引擎gem。捆绑器将其隐藏在哪里?
2013年

2
我认为gem install gemname-version.gem电话应该是gem install --local gemname-version.gem
JonB 2014年

@Green- gem which gemname应该告诉您特定的宝石在哪里,这对您不起作用吗?
sameers 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推荐对它进行旋转,它对我不起作用。
同构2014年

1
@isomorphismes +1您的评论。:我创建有关错误一个单独的问题在这里stackoverflow.com/questions/27045874/...
拉- comadreja

1
这是救命稻草!谢谢你,先生。
Noldorin

33

Bundler允许您直接从git存储库中使用gems。在您的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


可能是最好的答案
Anton Semenichenko

请注意,如果对乘客和apache / ngix使用此方法,可能会遇到麻烦。运行时bundle,此类git-gem-依赖项不会全局安装,而是安装在当前用户的主目录中。旅客将以您的Web服务器用户(例如www-data)的身份运行ruby,该用户无法访问此目录,因此不会加载该“ git-gem”。你会得到一个错误... is not yet checked out. Run bundle install first
鱼骨

16

过时的(请参阅评论)

如果项目来自github,并且包含在http://gems.github.com/list.html上的列表中,那么您只需将github存储库添加到gems源即可安装它:

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

1
哦?我刚刚做了这个,它DID起作用了...在将它添加到您想得到的源中之前,请访问gems.github.com?(但不要使用sudo)
esharp 2012年

7
@esharp,它们托管已构建的主机,但不再构建。如果gem 自2009年以来得到更新,gems.github.com副本将被淘汰。
东武


4

你也可以做 gem install username-projectname -s http://gems.github.com


6
已过时,请参阅其他答案的注释。
Lee Hambley 2013年

1
对于旧的代码库仍然有帮助。是的,2013年,我正在研究Rails 2.3.4项目。
Vivek Sampara

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的建议使用捆绑程序进行安装,并且gem创建了二进制文件,请确保将其运行,bundle exec mygembinary因为gem存储在捆绑程序目录中,该目录在常规gem路径中不可见。


2

在新的Linux机器上,您还需要安装git。Bundle在后台使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.