Làm cách nào để cài đặt gem từ nguồn GitHub?


451

Tôi muốn cài đặt gem từ nguồn GitHub mới nhất.

Làm thế nào để tôi làm điều này?

Câu trả lời:


332

Trong trường hợp bạn đang sử dụng gói, bạn cần thêm một cái gì đó như thế này vào Gemfile của bạn:

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

Và trong trường hợp có .gemspectập tin, nó sẽ có thể tìm nạp và cài đặt gem khi chạy bundle install.

CẬP NHẬT. Như đã nêu trong các nhận xét, để Bundler hoạt động chính xác, bạn cũng cần thêm các mục sau vào config.ru:

require "bundler" 
Bundler.setup(:default)

9
Tôi cũng cần thêm các mục sau (đã thêm vào config.ru): require "bundler" Bundler.setup(:default)Xem tài liệu của trình đóng gói để biết thêm chi tiết
Louis Sayers

40
Ngoài ra, người ta có thể chỉ định các tùy chọn tham chiếu, chi nhánh hoặc thẻ chẳng hạngem 'redcarpet', :git => 'git://github.com/tanoku/redcarpet.git', :branch => 'yourbranch'
Amit Patel

25
cũng có : gem 'redcarpet', github: 'tanoku/redcarpet'. akash.im/2012/06/05/bundler-new-github-option.html
Andrew

@AmitPatel Cảm ơn bạn rất nhiều !!! : chi nhánh => 'yourbranch', dòng này của bạn đã giải quyết một vấn đề lớn cho tôi ngay bây giờ. Rất biết ơn bạn.
KM Rakibul Hồi giáo

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

400

tốt, điều đó phụ thuộc vào dự án trong câu hỏi. Một số dự án có tệp * .gemspec trong thư mục gốc của chúng. Trong trường hợp đó, nó sẽ là

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

Các dự án khác có một nhiệm vụ cào, được gọi là "đá quý" hoặc "xây dựng" hoặc một cái gì đó tương tự, trong trường hợp này bạn phải gọi "cào", nhưng điều đó phụ thuộc vào dự án.

Trong cả hai trường hợp, bạn phải tải về nguồn.


2
Cảm ơn - câu trả lời hoàn hảo.
Jon Schizing

20
Chỉ là một mẹo để cho mọi người biết những gì nó thực sự xảy ra. Các gemname-version.gemtập tin được tạo ra khi gọigem build
Đang chờ Dev ...

Trường hợp gem install gemname-version.gemlệnh cài đặt đá quý git cục bộ? Tôi không thể tìm thấy bất cứ nơi nào trong máy cục bộ của mình một viên ngọc động cơ được cài đặt theo cách này. Trường hợp nào bundler giấu nó?
Green

2
Tôi nghĩ rằng gem install gemname-version.gemdòng nên làgem install --local gemname-version.gem
JonB

@Green - gem which gemnamenên cho bạn biết một viên ngọc cụ thể ở đâu, nó không phù hợp với bạn?
cùng

255

Hãy dùng thử gem_install cụ thể, nó cho phép bạn cài đặt một gem từ kho lưu trữ github của nó (như 'edge') hoặc từ một URL tùy ý. Rất hữu ích cho việc giả mạo đá quý và hack chúng trên nhiều máy và như vậy.

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

ví dụ

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

3
bạn có thể thêm lời giải thích về specific_installđá quý?
microspino

1
Đây chính xác là những gì tôi đang tìm kiếm, tương tự như hỗ trợ pip git của Python. gem Cụ_install -l <url để chiếu trên github> hoạt động như một cơ duyên!
Murph

1
ERROR: While executing gem ... (NoMethodError) undefined method 'build' for Gem::Package:Module Âm thanh rất tuyệt nhưng tôi sẽ không nhìn sâu hơn nữa. Chỉ muốn đăng rằng nó không hoạt động với tôi trong trường hợp người khác chuẩn bị cho nó một vòng xoáy dựa trên khuyến nghị của SO.
đẳng cấu

1
@isomorphismes +1 để bình luận của bạn. Tôi đã tạo một câu hỏi riêng về lỗi đó tại đây: stackoverflow.com/questions/27045874/
Kẻ

1
Đây là một cứu cánh! Cảm ơn ngài.
Noldorin

34

Bundler cho phép bạn sử dụng đá quý trực tiếp từ kho git. Trong Gemfile của bạn:

# 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'

Để biết thêm thông tin, hãy xem https://bundler.io/v2.0/guides/git.html


có lẽ là câu trả lời hay nhất
Anton Semenichenko

Xin lưu ý rằng bạn có thể gặp rắc rối nếu bạn sử dụng phương pháp này với hành khách và apache / ngix. Khi chạy bundle, các phụ thuộc git-gem- như vậy sẽ không được cài đặt trên toàn cầu mà thay vào đó trong thư mục chính của người dùng hiện tại. Hành khách sẽ chạy ruby ​​với tư cách là người dùng máy chủ web của bạn (ví dụ www-data) không có quyền truy cập vào thư mục này và do đó "git-gem" này sẽ không được tải. Bạn sẽ nhận được một lỗi ... is not yet checked out. Run bundle install first.
xương cá

16

OBSOLLEX (xem bình luận)

Nếu dự án là từ github và có trong danh sách trên http://gems.github.com/list.html , thì bạn chỉ cần thêm repo github vào các nguồn đá quý để cài đặt nó:

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

1
o rly? tôi vừa mới làm điều này và nó DID hoạt động ... hãy truy cập Gem.github.com trước khi thêm nó vào các nguồn bạn đoán? (nhưng không sử dụng sudo)
esharp

7
@esharp, họ lưu trữ những cái họ đã xây dựng, nhưng họ không xây dựng chúng nữa. Nếu đá quý được cập nhật từ năm 2009 , một bản sao gem.github.com sẽ bị lỗi thời.
Tobu

13

Nếu bạn nhận được đá quý của mình từ kho lưu trữ GitHub công khai, bạn có thể sử dụng tốc ký

gem 'nokogiri', github: 'tenderlove/nokogiri'

4

Ngoài ra bạn có thể làm gem install username-projectname -s http://gems.github.com


6
Lỗi thời, xem ý kiến ​​của câu trả lời khác.
Lee Hambley

1
Vẫn giúp tôi cho một vấn đề với một cơ sở mã cũ. Có năm 2013 và tôi đang làm việc trên một dự án đường ray 2.3.4.
Vivek Sampara

4

Trong Gemfile của bạn, hãy thêm vào như sau:

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

Bạn cũng có thể thêm các tùy chọn ref, nhánh và thẻ,

Ví dụ: nếu bạn muốn tải xuống từ một chi nhánh cụ thể:

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

Sau đó chạy:

bundle install

3

Nếu bạn cài đặt bằng cách sử dụng trình đóng gói theo đề xuất của gryzzly và đá quý tạo ra nhị phân thì hãy đảm bảo bạn chạy nó bundle exec mygembinarykhi đá quý được lưu trữ trong thư mục gói không hiển thị trên đường dẫn đá quý thông thường.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.