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
또한 심판, 지점 또는 태그 옵션을 지정할 수 있습니다gem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
Amit Patel

25
또한 있습니다 : gem 'redcarpet', github: 'tanoku/redcarpet'. akash.im/2012/06/05/bundler-new-github-option.html
Andrew

@AmitPatel 너무 너무 감사합니다 !!! : branch => 'yourbranch',이 줄은 지금 나에게 큰 문제를 해결했습니다. 당신에게 너무 감사합니다.
KM Rakibul Islam

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

20
사람들에게 실제로 무슨 일이 일어나고 있는지 알려주는 팁. gemname-version.gem호출 할 때 파일이 만들어집니다gem build
... 데브 대기

gem install gemname-version.gem명령은 git gem을 로컬로 어디에 설치합니까? 이 방법으로 설치된 엔진 젬을 로컬 컴퓨터의 어느 곳에서도 찾을 수 없습니다. 번 들러는 어디에 숨깁니까?
Green

2
나는 gem install gemname-version.gem라인이 있어야 한다고 생각 합니다.gem install --local gemname-version.gem
JonB

@Green- gem which gemname특정 보석의 위치를 ​​알려줘야합니다.
sameers

255

github 저장소 (예 : 'edge') 또는 임의의 URL에서 gem을 설치할 수 있는 specific_install 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

1
이것은 내가 찾던 것입니다. 파이썬의 pip git 지원과 비슷합니다. gem specific_install -l <github에서 프로젝트 URL>은 매력처럼 작동했습니다!
Murph

1
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module 매우 시원하게 들리지만 더 이상 조사하지는 않을 것입니다. 다른 사람이 SO 권장 사항에 따라 소용돌이를 줄 경우를 대비하여 저에게 효과적이지 않다고 게시하고 싶었습니다.
동 형사상

1
귀하의 의견에 @isomorphismes +1. 이 오류에 대한 별도의 질문을 여기에 만들었습니다 : stackoverflow.com/questions/27045874/…
La-comadreja

1
이것은 생명의 은인입니다! 감사합니다.
Noldorin

33

번 들러를 사용하면 자식 저장소에서 직접 보석을 사용할 수 있습니다. 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

승객과 아파치 / ngix에서이 방법을 사용하면 문제가 발생할 수 있습니다. 를 실행 bundle하면 이러한 git-gem- 종속성은 전체적으로 설치되지 않고 현재 사용자의 홈 디렉토리에 설치됩니다. 승객은 www-data이 디렉토리에 액세스 할 수없는 웹 서버 사용자 (예 :)로 ruby를 실행하므로이 "git-gem"은로드되지 않습니다. 오류가 발생 ... is not yet checked out. Run bundle install first합니다.
fishbone

16

OBSOLETE (댓글 참조)

프로젝트가 github에서 왔고 http://gems.github.com/list.html 의 목록에 포함되어 있다면 gem 소스에 github 저장소를 추가하여 설치할 수 있습니다.

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

1
랠리? 방금 지금이 작업을 수행했으며 작동했습니다 ... yr 소스에 추가하기 전에 gems.github.com으로 이동하여 추측합니까? (하지만 sudo를 사용하지 마십시오)
esharp

7
@esharp, 그들은 그들이 만든 것들을 호스팅하지만 더 이상 그들을 구축하지 않습니다. gem이 2009 년 이후로 업데이트 된 경우 gems.github.com 사본은 더 이상 사용되지 않습니다.
Tobu


4

또한 할 수 있습니다 gem install username-projectname -s http://gems.github.com


6
더 이상 사용되지 않는 다른 답변의 의견을 참조하십시오.
Lee Hambley

1
여전히 오래된 코드베이스 문제에 도움이되었습니다. 예, 2013 년과 저는 2.3.4 프로젝트를 진행하고 있습니다.
Vivek Sampara

4

Gemfile에서 다음을 추가하십시오.

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

참조, 분기 및 태그 옵션을 추가 할 수도 있습니다.

예를 들어 특정 지점에서 다운로드하려는 경우 :

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

그런 다음 다음을 실행하십시오.

bundle install

3

gryzzly가 제안한 번 들러를 사용하여 설치하고 gem이 바이너리를 생성하는 bundle exec mygembinary경우 gem이 일반 gem 경로에 표시되지 않는 번 들러 디렉토리에 저장되므로 이를 실행해야 합니다.


2

새로운 Linux 시스템에서는 설치해야합니다 git. 번들은 장면 뒤에서이를 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.