2009-07-15 46 views
1

Rubyスクリプトを実行するときに、スクリプトに必要な宝石を自動的にインストールする方法はありますか? 、ルビーと与えられたPC上で実行するには、このスクリプトのこと(人間とプログラマーとして)複数の宝石をコンピュータにインストールする最も良い方法は?

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

は今、私が知っている:

例えば、これらは、Rubyスクリプトの先頭にステートメントを必要と考えますスクリプトが動作する前に、 'gem install archive-zip'コマンドを最初に実行する必要があります。しかし、このスクリプトを数十台のPC上で実行する必要がある場合、宝石依存関係が最初にインストールされているかどうかを確認する必要がありませんか?

また、いくつかの宝石が必要な場合はどうなりますか?

答えて

1

ない、これはあなたが後にしているまさにですが、私は私がどこか安全に私の宝石のリストをダンプする方法サーバーを設定しているときかどうかわから...

gem list > my_gems.txt 

もしIボックスを再構築するか、別のマシンを構築する必要があります。このスクリプトを使って宝石をインストールする必要があります...

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 
+0

私が話していることに非常に近いです。しかし、もし私が宝石の統一を望むなら、スクリプトはどのように見えるだろうか? – Ash

+0

ちょうど '--ignore dependencies'を削除してください リストがあなたのインストールされた宝石であれば、あなたは既に依存関係があるので、気にしない方が早いです。 – Henry

0

シューズにはこれを行うには本当に滑らかな方法があります。このblog post by _whyを参照してください。

あなたは可能性があり、ポートことのいくつかの標準的なルビーへ(空想UIなし)

1

gem unpackを使用することにより、あなたがディレクトリに宝石を解凍することができます。そこからスクリプトにそれらを含めることができます。たとえば、無作為に宝石morse(モールス符号をエンコード/デコードする宝石)を選んだ場合、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. 
関連する問題