在计算机上安装多颗宝石的最佳方法?

时间:2009-07-15 03:14:06

标签: ruby gem

运行Ruby脚本时,是否有一种简单的方法可以让它自动安装脚本所需的宝石?

例如,请考虑ruby脚本顶部的这些require语句:

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

现在,我知道(作为一个人和程序员),要使这个脚本在使用Ruby的给定PC上运行,需要先运行'gem install archive-zip'命令,然后才能运行脚本。但是如果这个脚本需要在几十台PC上运行,那么还有什么可以让我不必确保首先安装所有的gem依赖项吗?

此外,如果需要多个宝石怎么办?

3 个答案:

答案 0 :(得分:1)

通过使用gem unpack,您可以将gems解压缩到目录中。从那里,您可以将它们包含在您的脚本中。例如,随机选择gem morse(一个编码/解码莫尔斯代码的gem),假设我使用gem unpack morse将它放在目录/ gems /中。它解压缩到morse-0.0.2目录,因为那是版本。

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

答案 1 :(得分:1)

不确定这是否正是您所追求的,但当我设置服务器时,我想如何将我的宝石列表转储到安全的地方......

gem list > my_gems.txt

如果我需要重建盒子或构建另一台机器,我使用这个脚本安装宝石......

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

答案 2 :(得分:0)

鞋子有一种非常光滑的方式。见blog post by _why

您可以将其中的一部分移植到标准的ruby(没有花哨的UI)