Cài đặt Gem từ Github Branch?


93

Trong tệp gem của tôi, tôi có cái này:

gem "authlogic", :git => "git://github.com/odorcicd/authlogic.git", :branch => "rails3"

Làm cách nào để cài đặt nó dưới dạng đá quý để tôi có thể kiểm tra nó?

Câu trả lời:


200

Bạn không cần phải xây dựng viên ngọc tại địa phương. Trong gemfile của bạn, bạn có thể chỉ định nguồn github với ref, branch hoặc tag.

gem 'rails', :git => "git://github.com/rails/rails.git", :ref => "4aded"
gem 'rails', :git => "git://github.com/rails/rails.git", :branch => "2-3-stable"
gem 'rails', :git => "git://github.com/rails/rails.git", :tag => "v2.3.5"

Sau đó, bạn chạy bundle installhoặc hình thức ngắn là chỉ bundle.

Đọc thêm về nó tại đây: http://bundler.io/man/gemfile.5.html#GIT

Cập nhật:một mã định danh nguồn github .

gem 'country_select', github: 'stefanpenner/country_select'

Tuy nhiên, họ cảnh báo không nên sử dụng nó: NOTE: This shorthand should be avoided until Bundler 2.0, since it currently expands to an insecure git:// URL. This allows a man-in-the-middle attacker to compromise your system.

Sau Bundler 2.0, bạn có thể giải quyết vấn đề trên với câu lệnh này ở gần đầu Gemfile:

git_source(:github) { |repo| "https://github.com/#{repo}.git" }

cập nhật từ năm 2017, tôi không thể làm cho mã nhận dạng nguồn GitHub hoạt động nhưng: git => ref hoạt động tốt
Amias

Có thể là trò tai quái của nó trên Windows, nhưng với RubyInstaller 2.3 trên Windows 10, tôi có thiết lập tương tự cho một viên ngọc mà tôi có chưa được phát hành và tôi đưa ra bundle installlệnh, RubyGems cho biết nó đang tìm nạp git repo và nó đã được cài đặt, nhưng khi tôi làm điều gem list gemnameđó không hiển thị trong đá quý được cài đặt cục bộ của tôi.
FilBot3

nvm, đó là bởi vì tôi đang mong đợi bundle installcài đặt như thể nó là toàn cầu hoặc cho tất cả các rubyge. tuy nhiên, nó thực hiện theo từng dự án hoặc đôi khi trên mỗi người dùng. github.com/bundler/bundler/issues/3070#issuecomment-46361014
FilBot3

Ít nhất đối với môi trường của chúng ta, số github:nhận dạng đưa ra transmits data without encryptioncảnh báo mà tôi đang tìm cách tránh. Chuyển đổi sang một số git:nhận dạng với httpscó thể là không đủ, vì tôi cũng có một nhánh để chỉ định.
Lọc máu

Về cài đặt với định danh nguồn github: NOTE: This shorthand should be avoided until Bundler 2.0, since it currently expands to an insecure git:// URL. This allows a man-in-the-middle attacker to compromise your system.- theo các liên kết mà bạn đã đưa ra
Danny Bullis

64
  1. Sao chép kho lưu trữ Git.

    $ git clone git://github.com/odorcicd/authlogic.git
    
  2. Thay đổi thư mục mới.

    cd authlogic
    
  3. Chi nhánh thanh toán

    $ git checkout -b rails3 remotes/origin/rails3
    
  4. Xây dựng đá quý.

    $ rake build gem
    
  5. Cài đặt đá quý.

    $ gem install pkg/gemname-1.23.gem
    

14
Tôi cần phải thay đổi 4. thành "xây dựng cào" để xây dựng viên ngọc.
raphael_turtle

6
Thay vì 4. Tôi đã phải sử dụng đá quý xây dựng tên-of-file.gemspec để xây dựng các đá quý cào build o cào đá quý đã không làm việc cho tôi
marimaf

5
Thay vì 4 và 5 bạn có thể làm "cào cài đặt"
drinor

2
Hoặc trực tiếp từ github: gem 'rails', :github => 'rails', :branch => '5.0-stable'- link: Bundler.io/v1.3/git.html
Danny,

@Danny đó sẽ làgithub: 'rails/rails'
Cameron Martin

5

Tôi phải sửa đổi câu trả lời của @ janic_ để làm cho nó hoạt động. Hy vọng nó sẽ giúp ích cho các noobs ruby ​​khác như mình.

  1. Sao chép kho lưu trữ Git.

    $ git clone git://github.com/odorcicd/authlogic.git
    
  2. Thay đổi thư mục mới.

    $ cd authlogic
    
  3. Chi nhánh thanh toán

    $ git checkout -b rails3 remotes/origin/rails3
    
  4. Cài đặt các gói

    $ bundle install
    
  5. Xây dựng đá quý.

    $ rake build
    
  6. Cài đặt đá quý.

    $ gem install pkg/gemname-1.23.gem
    

-1

Giả sử bạn là người dùng Bundler,

$ bundle install

sẽ cài đặt các đá quý được liệt kê trong Gemfile của bạn. (Và nếu bạn không phải là người dùng Bundler, tại sao bạn lại có Gemfile?


Nếu bạn đang nghĩ đến việc bỏ phiếu từ chối câu trả lời này, trước tiên hãy giải thích lý do tại sao bạn cho rằng câu trả lời đó nên bị bỏ phiếu. Các phiếu phản đối không có phản hồi mang tính xây dựng sẽ không hữu ích cho việc tạo điều kiện cho sự hiểu biết. Cảm ơn.
sampablokuper
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.