Pregunta

¿Hay una manera fácil, cuando se ejecuta un script Ruby, para conseguir que se instala automáticamente gemas requeridas para la escritura?

Por ejemplo, consideran que estas requieren declaraciones en la parte superior de un script Ruby:

require 'net/http'
require 'fileutils'
require 'archive/zip'

Ahora, sé (como un ser humano y programador) que para esta secuencia de comandos para ejecutar en un PC determinado con Ruby, la 'joya fichero de instalación-zip' comando debe ejecutarse en primer lugar, antes de que el guión va a funcionar. Pero si este script necesita ejecutarse en ordenadores de decenas, ¿hay algo que me puede salvar de tener que garantizar TODAS las dependencias de la gema se instala por primera vez?

Además, ¿y si hay varias gemas requeridas?

¿Fue útil?

Solución

No estoy seguro si esto es exactamente lo que está después, pero cuando tengo un servidor configurado como quiero yo tiro una lista de mis joyas a un lugar seguro ...

gem list > my_gems.txt

Si necesito para reconstruir el cuadro o construir otra máquina que uso este script para instalar las gemas ...

bulk_gems.rb
#! /usr/local/bin/ruby

STDIN.readlines.each do |l|
 m = l.match /^(\S+) \((.*)\)/
 unless m.nil?
   gem_name, versions = m[1], m[2].split(',')
   versions.each do |v|
     system "gem install #{gem_name} --version #{v} --ignore-dependencies"
   end
 end
end

more my_gems.txt | bulk_gems.rb

Otros consejos

Mediante el uso de gem unpack puede desempaquetar las gemas en un directorio. A partir de ahí, se puede incluir en su guión. Por ejemplo, escoger al azar el morse joya (una joya que codifica / decodifica el código Morse), digamos que yo uso gem unpack morse para ponerlo en un directorio / joyas /. Se descomprime en el directorio morse-0.0.2, ya que es la versión.

$LOAD_PATH << './gems/morse-0.0.2/lib'
require 'morse'
# The gem is included, and Morse is now defined.

Zapatos tiene una forma muy resbaladizo de hacer esto. Ver este entrada del blog de _why .

Usted podría puerto de algunos de que a rubí estándar (sin la interfaz de usuario de fantasía)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top