2010-04-05 15 views

Respuesta

303

en caso de que utilice bundler, es necesario añadir algo como esto a su Gemfile:

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

Y en caso de que haya .gemspec archivo, sh Debería poder buscar e instalar la gema al ejecutar bundle install.

+8

También necesitaba agregar lo siguiente (agregado a mi config.ru): 'require" bundler " Bundler.setup (: predeterminado)' Ver [bundler docs] (http://gembundler.com/bundler_setup.html) para más detalles –

+37

Además, se pueden especificar las opciones de ref, branch o tag, por ejemplo, 'gem 'redcarpet',: git => 'git: //github.com/tanoku/redcarpet.git',: branch => 'yourbranch' ' –

+9

si se despliega en Heroku, es posible que desee utilizar' https: // 'en lugar de' git: // ' –

370

bueno, eso depende del proyecto en cuestión. Algunos proyectos tienen un archivo * .gemspec en su directorio raíz. En ese caso, sería

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

Otros proyectos tienen una tarea rastrillo, llamado "tesoro" o "construir" o algo por el estilo, en este caso usted tiene que invocar "rastrillo", pero eso depende de la proyecto.

En ambos casos, debe descargar la fuente.

+3

Gracias que ayuda mucho. – Vojto

+2

Gracias - respuesta perfecta. –

+16

Solo un consejo para que la gente sepa lo que realmente está sucediendo. El archivo 'gemname-version.gem' se crea al invocar' gem build' –

17

OBSOLETO (ver comentarios)

Si el proyecto es de GitHub, y contenía en la lista de http://gems.github.com/list.html, a continuación, puedes añadir el repositorio GitHub a las fuentes de gemas para instalarlo:

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

GitHub ya no alberga gemas, por lo que ya no funciona. – nickh

+1

o rly? Acabo de hacer esto y funcionó ... vaya a gems.github.com antes de agregarlo a sus fuentes, supongo. (pero no use sudo) – esharp

+6

@esharp, alojan los que construyeron, pero ya no los construyen. Si la joya se actualizó [desde 2009] (https://github.com/blog/500-state-of-the-hub-rackspace-day-0), una copia de gems.github.com quedará obsoleta. – Tobu

3

Si instala usando bundler como lo sugiere gryzzly y la gema crea un binario, asegúrese de ejecutarlo con bundle exec mygembinary ya que la gema se almacena en un directorio de bundler que no está visible en la ruta normal de la gema.

209

Pruebe la gema specific_install que le permite instalar una gema desde su repositorio github (como 'edge'), o desde una URL arbitraria. Muy útil para bifurcar gemas y piratearlas en múltiples máquinas y similares.

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

e.g.

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

podría agregar más explicación sobre la gema 'specific_install'? – microspino

+1

Esto es exactamente lo que estaba buscando, similar al soporte de pepita de Python. gem specific_install -l ¡funcionó como un amuleto! – Murph

+5

Super cool! lástima que no está en la línea de comandos por defecto gema. –

1

En una máquina Linux nueva también necesita instalar el comando git. El comando bundle lo usa detrás de escena.

5

También se puede hacer gem install username-projectname -s http://gems.github.com

+5

Obsoleto, vea los comentarios de la otra respuesta. –

+1

Todavía me ayudó con un problema con un código base anterior. Sí, es 2013 y estoy trabajando en un proyecto de carriles 2.3.4. –

13

Si usted está recibiendo sus gemas de un repositorio GitHub pública, puede utilizar la abreviatura

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

Bundler le permite usar joyas directamente de los repositorios Git. En su Gemfile:

# Use the http(s), ssh, or git protocol 
gem 'foo', git: 'https://github.com/dideler/foo.git' 
gem 'foo', git: '[email protected]:dideler/foo.git' 
gem 'foo', git: 'git://github.com/dideler/foo.git' 

# Specify a tag, ref, or branch to use 
gem 'foo', git: '[email protected]:dideler/foo.git', tag: 'v2.1.0' 
gem 'foo', git: '[email protected]:dideler/foo.git', ref: '4aded' 
gem 'foo', git: '[email protected]:dideler/foo.git', branch: 'development' 

# Shorthand for public repos on GitHub (supports all the :git options) 
gem 'foo', github: 'dideler/foo' 

Para obtener más información, consulte http://bundler.io/git.html

2

En su Gemfile, añada lo siguiente: referencia, rama y etiqueta opciones

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

También puede agregar,

Por ejemplo, si desea descargar desde una sucursal en particular:

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

A continuación, ejecute:

bundle install