Pergunta

Existe uma maneira fácil, ao executar um script Ruby, para obtê-lo para instalar automaticamente gemas necessárias para script?

Por exemplo, considere estes requerem declarações no topo de um script ruby:

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

Agora, eu sei (como um ser humano e programador) que para este script para ser executado em um determinado PC com Ruby, o 'gem install archive-zip' necessidades comando a ser executado primeiro, antes de o script vai funcionar. Mas se este script precisa ser executado em dezenas de PCs, há alguma coisa que pode me salvar de ter que garantir que todas as dependências gem são instalado pela primeira vez?

Além disso, o que se há várias jóias necessário?

Foi útil?

Solução

Não sei se isso é exatamente o que você está depois, mas quando eu tenho um servidor configurado como eu quero eu despejar uma lista dos meus gemas para um lugar seguro ...

gem list > my_gems.txt

Se eu precisar para reconstruir a caixa ou construir outra máquina eu uso este script para instalar as 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

Outras dicas

Ao usar gem unpack você pode descompactar as gemas em um diretório. De lá, você pode incluí-los em seu script. Por exemplo, escolhendo aleatoriamente a morse gem (uma jóia que codifica / decodifica código Morse), digamos que eu use gem unpack morse para colocá-lo em um diretório / gemas /. Ele descompacta para o diretório morse-0.0.2, já que é a versão.

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

Shoes tem uma maneira realmente liso de fazer isso. Veja este blog por _why.

Você poderia port alguns dos que a ruby ??padrão (sem o UI fantasia)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top