Zainstalować Gem z Github Branch?

95

W moim pliku gemfile mam to:

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

Jak zainstalować to jako klejnot, abym mógł to przetestować?

Lance Pollard
źródło

Odpowiedzi:

203

Nie musisz budować klejnotu lokalnie. W swoim gemfile możesz określić źródło github za pomocą ref, branch lub 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"

Wtedy biegasz bundle installalbo krótka forma jest po prostu bundle.

Przeczytaj więcej na ten temat tutaj: http://bundler.io/man/gemfile.5.html#GIT

Aktualizacja: istnieje identyfikator źródła Github .

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

Jednak ostrzegają przed używaniem go: 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.

Po Bundlerze 2.0 możesz obejść powyższy problem, używając tego stwierdzenia w górnej części pliku Gemfile:

git_source(:github) { |repo| "https://github.com/#{repo}.git" }
Archonic
źródło
aktualizacja z 2017 roku, nie mogłem uruchomić identyfikatora źródła GitHub, ale: git => ref działa dobrze
Amias
Może jej shenanigans Windows, ale z RubyInstaller 2.3 w systemie Windows 10, mam tę samą konfigurację dla gem mam że jest niepublikowany, i wydać bundle installpolecenie, RubyGems mówi jej pobierania repo git, a jego zainstalowaniu, ale kiedy robię gem list gemnameto nie pojawia się w moich lokalnie zainstalowanych klejnotach.
FilBot3
nvm, to dlatego, że spodziewam bundle installsię instalacji tak, jakby była globalna lub dla wszystkich rubygemów. jednak robi to na projekt, a czasami na użytkownika. github.com/bundler/bundler/issues/3070#issuecomment-46361014
FilBot3
Przynajmniej dla naszego środowiska github:identyfikator stanowi transmits data without encryptionostrzeżenie, którego chcę uniknąć. Konwersja na git:identyfikator z httpsmoże nie wystarczyć, ponieważ mam również gałąź do określenia.
Pysis
Odnośnie instalacji z identyfikatorem źródła 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.- za
podanym
64
  1. Sklonuj repozytorium Git.

    $ git clone git://github.com/odorcicd/authlogic.git
    
  2. Przejdź do nowego katalogu.

    cd authlogic
    
  3. Oddział kasy

    $ git checkout -b rails3 remotes/origin/rails3
    
  4. Zbuduj klejnot.

    $ rake build gem
    
  5. Zainstaluj klejnot.

    $ gem install pkg/gemname-1.23.gem
    
janic_
źródło
14
Musiałem zmienić 4. na „rake build”, żeby zbudować klejnot.
raphael_turtle
6
Zamiast 4. musiałem użyć gem build name-of-file.gemspec, aby zbudować gem rake build o rake gem nie działał dla mnie
marimaf
5
Zamiast 4 i 5 możesz zrobić "rake install"
drinor
2
Lub prosto z github: gem 'rails', :github => 'rails', :branch => '5.0-stable'- link: bundler.io/v1.3/git.html
Danny
1
U mnie gem build <gem-name>.gemspecdziałało. Nie rakewymieniłem w Gemfile. Tak rake build gemrzucona prowizja nie jest częścią pakietu. dodaj go do gemfile
RajaRaviVarma
6

Muszę zmodyfikować odpowiedź @ janic_, aby działała. Mam nadzieję, że pomoże to innym rubinowym noobom takim jak ja.

  1. Sklonuj repozytorium Git.

    $ git clone git://github.com/odorcicd/authlogic.git
    
  2. Przejdź do nowego katalogu.

    $ cd authlogic
    
  3. Oddział kasy

    $ git checkout -b rails3 remotes/origin/rails3
    
  4. Zainstaluj pakiety

    $ bundle install
    
  5. Zbuduj klejnot.

    $ rake build
    
  6. Zainstaluj klejnot.

    $ gem install pkg/gemname-1.23.gem
    
Hai Feng Kao
źródło
-1

Zakładając, że jesteś użytkownikiem Bundler,

$ bundle install

zainstaluje klejnoty wymienione w twoim pliku Gemfile. (A jeśli nie jesteś użytkownikiem Bundler, dlaczego masz Gemfile?

sampablokuper
źródło
Jeśli myślisz o głosowaniu negatywnym na tę odpowiedź, najpierw wyjaśnij, dlaczego uważasz, że powinna ona zostać odrzucona. Głosy w dół bez konstruktywnej opinii nie są pomocne w ułatwianiu zrozumienia. Dzięki.
sampablokuper