Buscar..


Observaciones

Documentación de Gemfile

Para los proyectos que se espera que crezcan, es una buena idea agregar comentarios a su Gemfile . De esa manera, incluso en configuraciones grandes, aún sabrás qué hace cada gema, incluso si el nombre no se explica por sí mismo y lo agregaste hace 2 años.

Esto también puede ayudarlo a recordar por qué eligió una determinada versión y, por lo tanto, volver a evaluar el requisito de la versión más adelante.

Ejemplos:

# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'

¿Qué es una gema?

Una gema es el equivalente a un complemento o una extensión para el lenguaje de programación ruby.

Para ser exactos, los rieles no son más que una gema. Muchas gemas se construyen sobre rieles u otras gemas (dependen de dicha gema) o son independientes.

En tu proyecto Rails

Gemfile

Para tu proyecto de Rails tienes un archivo llamado Gemfile . Aquí puede agregar gemas que desee incluir y usar en su proyecto. Una vez agregado, debe instalar la gema utilizando bundler (vea la sección bundler ).

Gemfile.lock

Una vez que hayas hecho esto, tu Gemfile.lock se actualizará con tus gemas recién agregadas y sus dependencias. Este archivo bloquea las gemas usadas para que usen esa versión específica declarada en ese archivo.

GEM
remote: https://rubygems.org/
specs:
devise (4.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
responders
warden (~> 1.2.3)

Este ejemplo es para el devise gema. En el Gemfile.lock la versión 4.0.3 , para indicar cuándo se instala su proyecto en otra máquina o en su servidor de producción qué versión específica se debe usar.

Desarrollo

Una sola persona, un grupo o toda una comunidad trabaja y mantiene una gema. El trabajo realizado generalmente se libera después de issues se hayan solucionado ciertos issues o se hayan agregado features .

Por lo general, los lanzamientos siguen el principio de versión semántica 2.0.0 .

Bundler

La forma más fácil de manejar y administrar gemas es mediante el uso de bundler . Bundler es un gestor de paquetes comparable a bower.

Para usar bundler primero necesitas instalarlo.

gem install bundler

Después de tener el empaquetador en funcionamiento, todo lo que necesita hacer es agregar gemas a su Gemfile y ejecutar

bundle

en tu terminal Esto instala sus gemas recién agregadas a su proyecto. Si surgiera un problema, obtendría un aviso en su terminal.

Si está interesado en obtener más detalles, le sugiero que eche un vistazo a los documentos .

Gemfiles

Para comenzar, gemfiles requiere al menos una fuente, en la forma de la URL para un servidor RubyGems.

Genere un Gemfile con la fuente predeterminada rubygems.org ejecutando bundle init . Use https para que su conexión al servidor se verifique con SSL.

source 'https://rubygems.org'

A continuación, declare las gemas que necesita, incluidos los números de versión.

gem 'rails', '4.2.6'
gem 'rack',  '>=1.1'
gem 'puma',  '~>3.0'

La mayoría de los especificadores de versión, como> = 1.0, se explican por sí mismos. El especificador ~> tiene un significado especial. ~> 2.0.3 es idéntico a> = 2.0.3 y <2.1. ~> 2.1 es idéntico a> = 2.1 y <3.0. ~> 2.2.beta coincidirá con versiones preliminares como 2.2.beta.12.

Los repositorios de Git también son fuentes de gemas válidas, siempre que el repositorio contenga una o más gemas válidas. Especifique qué comprobar con :tag :branch , o :ref . El valor predeterminado es la rama master .

gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'

Si desea utilizar una gema desempaquetada directamente desde el sistema de archivos, simplemente configure la opción: ruta a la ruta que contiene los archivos de la gema.

gem 'extracted_library', :path => './vendor/extracted_library'

Las dependencias se pueden colocar en grupos. Los grupos pueden ignorarse en el momento de la instalación (usando --without ) o requerirse de una sola vez (usando Bundler.require ).

gem 'rails_12factor', group: :production

group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'dotenv-rails'
end

Puede especificar la versión requerida de Ruby en el Gemfile con ruby . Si el Gemfile se carga en una versión diferente de Ruby, Bundler generará una excepción con una explicación.

ruby '2.3.1'

Gemas

Si está utilizando RVM(Ruby Version Manager) entonces es una buena idea usar un gemset de gemset para cada proyecto. Un gemset es solo un contenedor que puedes usar para mantener las gemas separadas unas de otras. Crear un conjunto de gemset por proyecto le permite cambiar gemas (y versiones de gemas) para un proyecto sin romper todos los otros proyectos. Cada proyecto solo necesita preocuparse por sus propias gemas.

RVM proporciona (> = 0.1.8) un @global gemset por intérprete de rubíes. Las gemas que instala en el conjunto de @global gemset para un rubí determinado están disponibles para todos los demás conjuntos de gemas que cree en asociación con ese rubí. Esta es una buena manera de permitir que todos sus proyectos compartan la misma gema instalada para una instalación específica de un intérprete de Ruby.

Creando gemsets

Supongamos que ya tiene instalado ruby-2.3.1 y lo ha seleccionado con este comando:

rvm use ruby-2.3.1

Ahora para crear gemset para esta versión rubí:

rvm gemset create new_gemset

donde el new_gemset es el nombre de gemset. Para ver la lista de gemsets disponibles para una versión ruby:

rvm gemset list

para enumerar las gemas de todas las versiones de ruby:

rvm gemset list_all

para usar un gemset de la lista (supongamos que new_gemset es el gemset que quiero usar):

rvm gemset use new_gemset

También puede especificar la versión de ruby ​​con el conjunto de gemas si desea cambiar a otra versión de ruby:

rvm use ruby-2.1.1@new_gemset

para especificar un conjunto de gemas predeterminado para una versión particular de ruby:

rvm use 2.1.1@new_gemset --default

para eliminar todas las gemas instaladas de un conjunto de gemas, puede vaciarlo de la siguiente manera:

rvm gemset empty new_gemset

para copiar un conjunto de gemas de un rubí a otro puedes hacerlo de la siguiente manera:

rvm gemset copy 2.1.1@rails4 2.1.2@rails4

para eliminar un gemset:

rvm gemset delete new_gemset

para ver el nombre actual de gemset:

rvm gemset name

para instalar una gema en el conjunto global de gemas:

rvm @global do gem install ...

Inicializando Gemsets durante Ruby Instalaciones

Cuando instala un nuevo ruby, RVM no solo crea dos gemsets (el gemset vacío y el gemset global), sino que también utiliza un conjunto de archivos editables por el usuario para determinar qué gemas instalar.

Al trabajar en ~/.rvm/gemsets , rvm busca global.gems y default.gems usando una jerarquía de árbol basada en la cadena ruby ​​que se está instalando. Usando el ejemplo de ree-1.8.7-p2010.02 , rvm verificará (e importará) los siguientes archivos:

~/.rvm/gemsets/ree/1.8.7/p2010.02/global.gems
~/.rvm/gemsets/ree/1.8.7/p2010.02/default.gems
~/.rvm/gemsets/ree/1.8.7/global.gems
~/.rvm/gemsets/ree/1.8.7/default.gems
~/.rvm/gemsets/ree/global.gems
~/.rvm/gemsets/ree/default.gems
~/.rvm/gemsets/global.gems
~/.rvm/gemsets/default.gems

Por ejemplo, si editó ~/.rvm/gemsets/global.gems agregando estas dos líneas:

bundler
awesome_print

Cada vez que instalas un nuevo rubí, estas dos gemas se instalan en tu conjunto global de gemas. global.gems archivos default.gems y global.gems generalmente se sobrescriben durante la actualización de rvm.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow