¿Instalar Gem de Github Branch?

94

En mi archivo de gemas tengo esto:

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

¿Cómo instalo eso como una gema para poder probarlo?

Lance Pollard
fuente

Respuestas:

200

No es necesario que construyas la gema localmente. En su archivo de gemas puede especificar una fuente de github con una referencia, rama o etiqueta.

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"

Entonces corres bundle installo la forma corta es simplemente bundle.

Lea más sobre esto aquí: http://bundler.io/man/gemfile.5.html#GIT

Actualización: hay un identificador de fuente github .

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

Sin embargo, advierten contra su uso: 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.

Después de Bundler 2.0, puede solucionar el problema anterior con esta declaración cerca de la parte superior del Gemfile:

git_source(:github) { |repo| "https://github.com/#{repo}.git" }
Archonic
fuente
actualización de 2017, no pude hacer que el identificador de fuente de GitHub funcione, pero: git => ref funciona bien
Amias
Tal vez sus travesuras de Windows, pero con RubyInstaller 2.3 en Windows 10, Me tienen esta misma configuración para una joya que tengo que es inédito, y emitir el bundle installcomando, RubyGems dice su ir a buscar el repositorio git, y su instalado, pero cuando lo hago gem list gemnamese no aparece en mis gemas instaladas localmente.
FilBot3
nvm, es porque espero bundle installinstalarlo como si fuera global, o para todos los rubygems. sin embargo, lo hace por proyecto o, a veces, por usuario. github.com/bundler/bundler/issues/3070#issuecomment-46361014
FilBot3
Al menos para nuestro entorno, el github:identificador da la transmits data without encryptionadvertencia que estoy buscando evitar. Convertir a un git:identificador con httpspodría no ser suficiente, ya que también tengo una rama para especificar.
Pysis
Con respecto a la instalación con el identificador de fuente de 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.- según el enlace que proporcionó
Danny Bullis
64
  1. Clona el repositorio de Git.

    $ git clone git://github.com/odorcicd/authlogic.git
    
  2. Cambie al nuevo directorio.

    cd authlogic
    
  3. Rama de pago

    $ git checkout -b rails3 remotes/origin/rails3
    
  4. Construye la gema.

    $ rake build gem
    
  5. Instala la gema.

    $ gem install pkg/gemname-1.23.gem
    
Janic_
fuente
14
Necesitaba cambiar 4. a "rake build" para construir la gema.
raphael_turtle
6
En lugar de 4. Tuve que usar gem build name-of-file.gemspec para construir el rastrillo de gemas build o rastrillo gem no funcionó para mí
marimaf
5
En lugar de 4 y 5 se puede hacer "rastrillo instalar"
drinor
2
O directamente desde github: gem 'rails', :github => 'rails', :branch => '5.0-stable'- enlace: bundler.io/v1.3/git.html
Danny
1
Para mí gem build <gem-name>.gemspecfuncionó. No he rakeincluido en el Gemfile. Así que rake build gemtiró el rastrillo no es parte del paquete. agréguelo al archivo de gemas
RajaRaviVarma
6

Tengo que modificar la respuesta de @ janic_ para que funcione. Espero que ayude a otros noobs ruby ​​como yo.

  1. Clona el repositorio de Git.

    $ git clone git://github.com/odorcicd/authlogic.git
    
  2. Cambie al nuevo directorio.

    $ cd authlogic
    
  3. Rama de pago

    $ git checkout -b rails3 remotes/origin/rails3
    
  4. Instalar paquetes

    $ bundle install
    
  5. Construye la gema.

    $ rake build
    
  6. Instala la gema.

    $ gem install pkg/gemname-1.23.gem
    
Hai Feng Kao
fuente
-1

Suponiendo que es un usuario de Bundler,

$ bundle install

instalará las gemas enumeradas en su Gemfile. (Y si no es usuario de Bundler, ¿por qué tiene un Gemfile?

sampablokuper
fuente
Si está pensando en rechazar esta respuesta, primero explique por qué cree que debería rechazarse. Los votos negativos sin comentarios constructivos no son útiles para facilitar la comprensión. Gracias.
sampablokuper