¿Cómo puedo instalar una gema local?

Respuestas:

288

Sí, cuando lo haga gem install, buscará primero el directorio actual, por lo que si su archivo .gem está allí, lo recogerá. Lo encontré en la referencia de gemas , que también puede encontrar útil:

gem install instalará la gema nombrada. Intentará una instalación local (es decir, un archivo .gem en el directorio actual), y si eso falla, intentará descargar e instalar la versión más reciente de la gema que desee.

Chris Bunch
fuente
2
El enlace termina en redirecciones infinitas :(
Ain Tohvri
2
Comprobando que esto funciona para mí en 2019.
Charles Wood
1
esto no funciona para mí en 2019
iconoclast
1
Tengo un Gemfilepero no un .gemarchivo. Entonces, ¿qué es este .gemarchivo? ¿Qué debería contener? - Espera - ya veo. Te refieres a un gem-name.gemarchivo. Recuerde que en Unix es bastante normal tener un archivo que comience con un '.' así que es mejor explicarlo.
Martin
Puedo confirmar desde el futuro de 2020, el enlace funciona para mí. En caso de que no funcione en un futuro lejano, aquí está la instantánea de
Jed Burke
329

Además, puedes usar gem install --local path_to_gem/filename.gem

Esto omitirá el escaneo habitual del repositorio de gemas que ocurre cuando lo dejas --local.

Puedes encontrar otra magia con gem install --help.

JasonTrue
fuente
Descargo una gema como rubygems en formato zip. Entonces no hay un archivo .gem aquí. ¿Cómo instalo esto desde local? Gracias.
Erran Morad
3
@BoratSagdiyev, un archivo zip no es una joya. Como la mayoría de los archivos zip, debe descomprimirlo antes de poder hacer mucho con él. Si contiene una gema, puede usar la instalación de gemas en el archivo .gem extraído. No recuerdo las partes internas del formato de gemas; es posible que solo sea un archivo zip con un encabezado especial, pero rubygems no reconoce los archivos zip como tales.
JasonTrue
62

También puede usar el nombre de archivo completo para su archivo de gemas:

gem install /full/path/to/your.gem

esto también funciona: es probablemente la forma más fácil

lesmana
fuente
38

Si creas tus gemas con bundler:

# do this in the proper directory
bundle gem foobar

Puede instalarlos con rastrillo después de que estén escritos:

# cd into your gem directory
rake install

Lo más probable es que tu gema descargada también lo sepa rake install.

Boris Stitnicky
fuente
3
Esta parece ser la mejor respuesta moderna. la respuesta aceptada es de hace 8 años
sixty4bit
14

si descarga el archivo del proyecto desde github u otro sitio de host scm, use gem build para compilar primero el proyecto, de modo que pueda obtener un archivo whatever.gem en el directorio actual. Entonces gema instalarlo!

hechen0
fuente
13

Si desea trabajar en una bifurcación de una gema modificada localmente, la mejor manera de hacerlo es

gem 'pry', path: './pry'

en un Gemfile

... donde ./pryestaría el clon de su repositorio. Simplemente ejecute bundle installuna vez, y cualquier cambio en las fuentes de gemas que realice se reflejará inmediatamente. Con gem install pry/pry.gem, las fuentes aún se trasladan GEM_PATHy siempre tendrá que ejecutar ambas bundle gem pryy gem updateprobar.

Matthias Winkelmann
fuente
5

Ve al camino donde está la gema y llama gem install -l gemname.gem

leobelizquierdo
fuente
0

Bueno, esta es mi instalación SECA:

  1. Mira en un ordenador con gemas ya instalados necesarios en el directorio de caché (por defecto: [Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache)
  2. Copiar todos los " *.gemsarchivos" a un ordenador sin gemas en lugar propio caché joya (por defecto el mismo camino patrón de primer paso: [Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache)
  3. En la consola se ubicará en el caché de gemas (cd [Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache) y disparará el gem install anygemwithdependencieshere(por ejemplo cucumber-2.99.0)

Está SECO porque después de instalar cualquier gema, por defecto, rubygems coloca el archivo de gema en el directorio de gemas de caché y no tiene sentido duplicar esos archivos, es más fácil si desea que ambas computadoras tengan las mismas versiones (o bloqueadas por reglas de seguridad paranoicas: v)

Editar: en algunas versiones de ruby ​​o rubygems, no funciona y dispara alertas o errores, puede colocar gemas en otro lugar pero no secarse, otra alternativa es usar el comando de lanzamiento integrado gem servery agregar la URL localhost en fuentes de gemas, más información en: https://guides.rubygems.org/run-your-own-gem-server/

Daniel Antonio Nuñez Carhuayo
fuente
0

Puede descargar gemas desde https://rubygems.org/gems/ o construir su gema local a través de un paquete y un estante.

p.ej:

  • paquete de gemas yourGemName
  • rastrillo de instalación

Tenga cuidado de instalar dependencias antes de instalar gemas reales.

  • instalación de gemas --local /pathToFolder/xxx-2.6.1.gem

Nota: Si usa td-agent fluentd y ruby ​​en la misma máquina. Asegúrese de utilizar el comando td-agent-gem de td-agent. td-agent tiene su propio Ruby.

Vinayak Mishra
fuente