1

Rubyスクリプトを実行するときに、スクリプトに必要なgemを自動的にインストールする簡単な方法はありますか?

たとえば、Ruby スクリプトの先頭にある次の require ステートメントを考えてみましょう。

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

さて、Ruby を搭載した特定の PC でこのスクリプトを実行するには、スクリプトが機能する前に、「gem install archive-zip」コマンドを最初に実行する必要があることを (人間およびプログラマーとして) 知っています。しかし、このスクリプトを何十台もの PC で実行する必要がある場合、すべての gem 依存関係を最初にインストールする必要がないようにする方法はありますか?

さらに、複数の gem が必要な場合はどうなるでしょうか。

4

3 に答える 3

1

を使用gem unpackすると、gem をディレクトリに展開できます。そこから、それらをスクリプトに含めることができます。たとえば、宝石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.
于 2009-07-15T03:42:26.703 に答える
1

これがまさにあなたが求めているものかどうかはわかりませんが、サーバーを希望どおりにセットアップしたら、宝石のリストを安全な場所にダンプします...

gem list > my_gems.txt

ボックスを再構築するか、別のマシンを構築する必要がある場合は、このスクリプトを使用して gem をインストールします...

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
于 2009-07-15T22:23:42.070 に答える
0

靴にはこれを行うための非常に巧妙な方法があります。_why によるこのブログ投稿を参照してください。

その一部を標準のルビーに移植できます(派手なUIなしで)

于 2009-07-15T03:30:58.507 に答える