質問
簡単な方法があり、Rubyスクリプトを実行するとき、それは自動的にスクリプトに必要な宝石をインストールするために取得する?
たとえば、これらはRubyスクリプトの先頭にステートメントを必要と考えてみます。
require 'net/http'
require 'fileutils'
require 'archive/zip'
さて、私は、Rubyで特定のPC上で実行するには、このスクリプトのために、コマンド「宝石は、アーカイブ・ジップインストール」をすることを(人間とプログラマーとして)知っているスクリプトが動作する前に、最初に実行する必要があります。このスクリプトは、パソコンの数十上で実行する必要がある場合でも、最初にインストールされているすべての宝石の依存関係を確保することから私を保存できることはありますか?
また、どのようないくつかの宝石がある場合は必要?
解決
これはあなたが、私は、サーバーは、私は私がどこかに私の宝石のリストをダンプする方法を設定しているときに安全... の後ですが、正確に何である場合は、
わかりません
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
他のヒント
gem unpack
するを使用することにより、ディレクトリの中に宝石を解凍することができます。そこから、あなたはあなたのスクリプトの中でそれらを含めることができます。例えば、ランダム宝石morse
(エンコード/モールス信号をデコードする宝石を)選ぶ、/のは、私が/ディレクトリに宝石をそれを置くためにgem unpack morse
を使用しましょう。それはバージョンですので、それは、ディレクトリモールス-0.0.2に解凍します。
$LOAD_PATH << './gems/morse-0.0.2/lib'
require 'morse'
# The gem is included, and Morse is now defined.
靴は、これを行うのは本当に巧みな方法があります。 _why のことで、このブログ記事を参照してください。
そのあなたは可能性があり、いくつかの標準的なポートルビーへ(空想UIなし)
所属していません StackOverflow