0

我需要在 Ruby 文件中运行一些命令,而不是在 Bash 中运行它们,因为我在 Unix 上,我想在不同的 shell 中运行它们,称为“s3sh”。如何指定外壳?

例如,在我的 Ruby 代码中,我尝试过:

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

但不可能将环境变量导出到运行 Ruby 脚本的 shell。(请参阅“在 Ruby 中导出环境变量”)

4

1 回答 1

2

s3sh is just a wrapper around the AWS::S3 gem, so you're over-complicating things. You don't need to shell out; you can just use Ruby:

require 'right_aws'

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