0

Rubyファイル内でいくつかのコマンドを実行する必要がありますが、Unixを使用しているため、Bashで実行するのではなく、「s3sh」と呼ばれる別のシェルで実行したいと思います。シェルを指定するにはどうすればよいですか?

たとえば、私のRubyコードでは、次のことを試しました。

 system "export RUBYSHELL=s3sh"
 s3 = system "RightAws::S3Interface.new(#{S3ID}, #{S3KEY})"
 system "s3.copy(#{SRCBUCKET}, #{FILE}, #{DESTBUCKET}, #{FILE})"
 system "unset RUBYSHELL"

ただし、Rubyスクリプトが実行されているシェルに環境変数をエクスポートすることはできません(「Rubyでの環境変数のエクスポート」を参照) 。

4

1 に答える 1

2

s3shはAWS::S3 gemの単なるラッパーであるため、物事を複雑にしすぎています。シェルアウトする必要はありません。あなたはただRubyを使うことができます:

require 'right_aws'

s3 = RightAws::S3Interface.new(S3ID, S3KEY)
s3.copy(SRCBUCKET, FILE, DESTBUCKET, FILE)
于 2012-07-26T22:30:27.517 に答える