ruby_latam

¿Qué es una gema?

Las gemas en Ruby son un formato estándar para poder distribuir programas o bibliotecas, de esta forma podemos instalar y ocupar de forma sencilla programas y bibliotecas escritos por terceros e incluso reutilizar bibliotecas nuestras.

Estas gemas, generalmente, son manejadas por RubyGems, que es un administrador de paquetes para Ruby y que provee un formato estandar para la distribución de gemas.

En este artículo podrás aprender a crear, utilizar y publicar tu primera gema.

Creando nuestra primera gema

Debemos decidir el nombre de nuestra gema, en este caso nuestra gema se llama ‘gemadesafio’.

Para comenzar

  1. Crear una nueva carpeta que contendrá nuestra nueva gema.
  2. Dentro de esta carpeta debemos crear un archivo llamado gemspec.
    • Lo primero que debemos hacer cuando creamos una nueva gema es crear un archivo llamado gemspec que contiene información sobre la gema. El nombre del archivo gemspec debe ser nombregema.gemspec.
      En este caso el nombre del archivo será gemadesafio.gemspec.
    # Archivo nueva_gema/gemadesafio.gemspec
    
    Gem::Specification.new do |s|
      s.name = "gemadesafio"
      s.version = '0.0.1'
      s.date = '2017-05-02'
      s.authors = ["David Barrientos"]
      s.email = ["[email protected]"]
      s.summary = "My very first"
      s.description = "Simple Hello World"
      s.homepage = "https://github.com/dbarrientos/gemadesafio"
      #s.files = ["lib/mygem3.rb"]
      # or
      s.files = Dir["{lib}/**/*.rb", "bin/*", "LICENSE", "*.md"]
    end
    • Pueden encontrar todas las opciones en http://guides.rubygems.org/specification-reference.
    • En la siguiente linea:
    s.files = Dir["{lib}/**/*.rb", "bin/*", "LICENSE", "*.md"]

    Se incluirán todos los archivos .rb que se encuentren dentro de la carpeta lib.

  3. A continuación, crearemos el código ruby para nuestra librería. Para esto, primero, dentro de la carpeta de nuestra gema, crearemos una nueva carpeta llamada lib.
  4. Dentro de esta carpeta crearemos nuestro archivo .rb donde crearemos una clase simple con un método de clase simple. El archivo se llamará gemadesafio.rb.
    # Archivo nueva_gema/lib/gemadesafio.rb
    
    class Gemadesafio
        def self.hola
            return "Hola mundo!!!"
        end
    end 
  5. Ahora construiremos nuestra gema. Para esto abriremos el terminal y nos dirigiremos a la carpeta de nuestra nueva gema. Una vez ahí escribiremos (siempre en el terminal) gem build gemadesafio.gemspec.
    • Una vez ejecutada la instrucción podrás ver algo asi:
    $ gem build gemadesafio.gemspec
    		WARNING:  licenses is empty, but is recommended.  Use a license identifier from
    		http://spdx.org/licenses or 'Nonstandard' for a nonstandard license.
    		WARNING:  See http://guides.rubygems.org/specification-reference/ for help
    		  Successfully built RubyGem
    		  Name: gemadesafio
    		  Version: 0.0.1
    		  File: gemadesafio-0.0.1.gem
    • Esto generará un archivo dentro de nuestra carpeta de la gema llamado gemadesafio-0.0.1.gem.

Usando la nueva gema en una aplicación

Usando nuestra gema localmente

Para poder hacer uso de nuestra gema debemos instalarla en nuestro gemfile. Pasa eso es necesario correr el siguiente comando en nuestro terminal gem install ./gemadesafio-0.0.1.gem.

Ahora puedes usar tu gema en tu aplicación de Rails de forma local incluyendola dentro del gemfile de tu aplicación con la linea gem 'gemadesafio'.

Puedes acceder a su funcionalidad de la siguiente forma

s = Gemadesafio.hola

Incluso, podrías probar tu gema desde la consola de ruby.

$ irb
2.3.3 :001 > require 'gemadesafio'
 => true 
2.3.3 :002 > Gemadesafio.hola
 => "Hola Mundo!!!!!"
Publicando nuestra gema en RubyGems

Puedes compartir tus gemas creadas con la comunidad de Ruby publicándola en RubyGems.org.
Para esto es necesario crearnos una cuenta gratis en https://rubygems.org/.

Una vez que tengamos una cuenta creada en RubyGems debemos ingresar en nuestro terminal gem push gemadesafio-0.0.1.gem.

Puede que, al principio les solicite sus credenciales de RubyGems (email y password). Despues de esto debería devolver el siguiente mensaje

Pushing gem to https://rubygems.org...
Successfully registered gem: gemadesafio (0.0.1)

Muy bien, haz creado tu primera gema!!!!!

Ahora otros desarrolladores podrán instalar la gema recién creada gem install gemadesafio o incluyendola dentro del gemfile con la línea gem 'gemadesafio'.

Para mayor información pueden revisar la documentación de RubyGems
http://guides.rubygems.org/make-your-own-gem/