Ruby Language
Uso de gemas
Buscar..
Instalando gemas de rubí
Esta guía asume que ya tienes Ruby instalado. Si está utilizando Ruby < 1.9
, deberá instalar RubyGems manualmente, ya que no se incluirá de forma nativa .
Para instalar una gema rubí, ingrese el comando:
gem install [gemname]
Si está trabajando en un proyecto con una lista de dependencias de gemas, éstas se enumerarán en un archivo llamado Gemfile
. Para instalar una nueva gema en el proyecto, agregue la siguiente línea de código en el Gemfile
:
gem 'gemname'
La gema de Bundler utiliza este Gemfile
para instalar las dependencias que requiere su proyecto; sin embargo, esto significa que tendrá que instalar primero Bundler ejecutando (si aún no lo ha hecho):
gem install bundler
Guarde el archivo y luego ejecute el comando:
bundle install
Especificando versiones
El número de versión se puede especificar en el comando live, con el indicador -v
, como por ejemplo:
gem install gemname -v 3.14
Al especificar los números de versión en un Gemfile
, tiene varias opciones disponibles:
- No se ha especificado ninguna versión (
gem 'gemname')
: instalará la última versión que sea compatible con otras gemas en elGemfile
. - Versión exacta especificada (
gem 'gemname', '3.14'
): solo intentará instalar la versión3.14
(y fallará si esto es incompatible con otras gemas en elGemfile
). - Número de versión mínimo optimista (
gem 'gemname', '>=3.14'
): solo intentará instalar la última versión que sea compatible con otras gemas en elGemfile
, y falla si ninguna versión mayor o igual a3.14
es compatible. El operador>
también se puede utilizar. - Número de versión mínimo pesimista (
gem 'gemname', '~>3.14'
) - Esto es funcionalmente equivalente a usargem 'gemname', '>=3.14', '<4'
. En otras palabras, solo se permite aumentar el número después del período final .
Como práctica recomendada : es posible que desee utilizar una de las bibliotecas de administración de versiones de Ruby como rbenv o rvm . A través de estas bibliotecas, puede instalar diferentes versiones de tiempos de ejecución y gemas de Ruby en consecuencia. Por lo tanto, cuando trabaje en un proyecto, esto será especialmente útil porque la mayoría de los proyectos están codificados contra una versión conocida de Ruby.
Instalación de gemas desde github / filesystem
Puedes instalar una gema desde github o sistema de archivos. Si la gema se ha extraído de git o de alguna manera ya se encuentra en el sistema de archivos, puede instalarla usando
gem install --local path_to_gem/filename.gem
Instalación de gema de github. Descarga las fuentes de github
mkdir newgem
cd newgem
git clone https://urltogem.git
Construir la gema
gem build GEMNAME.gemspec
gem install gemname-version.gem
Comprobando si una gema requerida está instalada desde el código
Para verificar si una gema requerida está instalada, desde su código, puede usar lo siguiente (usando nokogiri como ejemplo):
begin
found_gem = Gem::Specification.find_by_name('nokogiri')
require 'nokogiri'
....
<the rest of your code>
rescue Gem::LoadError
end
Sin embargo, esto se puede extender aún más a una función que se puede usar para configurar la funcionalidad dentro de su código.
def gem_installed?(gem_name)
found_gem = false
begin
found_gem = Gem::Specification.find_by_name(gem_name)
rescue Gem::LoadError
return false
else
return true
end
end
Ahora puede verificar si la gema requerida está instalada e imprimir un mensaje de error.
if gem_installed?('nokogiri')
require 'nokogiri'
else
printf "nokogiri gem required\n"
exit 1
end
o
if gem_installed?('nokogiri')
require 'nokogiri'
else
require 'REXML'
end
Usando un Gemfile y Bundler
Un Gemfile
es la forma estándar de organizar dependencias en su aplicación. Un Gemfile básico se verá así:
source 'https://rubygems.org' gem 'rack' gem 'sinatra' gem 'uglifier'
Puede especificar las versiones de la gema que desee de la siguiente manera:
# Match except on point release. Use only 1.5.X gem 'rack', '~>1.5.2' # Use a specific version. gem 'sinatra', '1.4.7' # Use at least a version or anything greater. gem 'uglifier', '>= 1.3.0'
También puedes sacar gemas directamente de un repositorio de git:
# pull a gem from github gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git' # you can specify a sha gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', sha: '30d4fb468fd1d6373f82127d845b153f17b54c51' # you can also specify a branch, though this is often unsafe gem 'sinatra', git: 'https://github.com/sinatra/sinatra.git', branch: 'master'
También puedes agrupar gemas dependiendo de para qué se usan. Por ejemplo:
group :development, :test do # This gem is only available in dev and test, not production. gem 'byebug' end
Puede especificar en qué plataforma deben ejecutarse ciertas gemas si su aplicación necesita poder ejecutarse en múltiples plataformas. Por ejemplo:
platform :jruby do gem 'activerecord-jdbc-adapter' gem 'jdbc-postgres' end platform :ruby do gem 'pg' end
Para instalar todas las gemas de un Gemfile haz:
gem install bundler bundle install
Bundler / inline (bundler v1.10 y posteriores)
A veces necesitas hacer un guión para alguien pero no estás seguro de lo que tiene en su máquina. ¿Hay todo lo que tu guión necesita? No es para preocuparse. Bundler tiene una gran función llamada en línea.
Proporciona un método gemfile
y, antes de que se ejecute el script, se descarga y requiere todas las gemas necesarias. Un pequeño ejemplo:
require 'bundler/inline' #require only what you need
#Start the bundler and in it use the syntax you are already familiar with
gemfile(true) do
source 'https://rubygems.org'
gem 'nokogiri', '~> 1.6.8.1'
gem 'ruby-graphviz'
end