我需要在Ruby文件中运行一些命令,而不是在Bash中运行它们,因为我在Unix上,我想在另一个shell中运行它们,称为“s3sh”。我该如何指定shell?
例如,在我的Ruby代码中,我尝试过:
system "export RUBYSHELL=s3sh"
s3 = system "RightAws::S3Interface.new(#{S3ID}, #{S3KEY})"
system "s3.copy(#{SRCBUCKET}, #{FILE}, #{DESTBUCKET}, #{FILE})"
system "unset RUBYSHELL"
但是Ruby脚本运行的shell不可能导出环境变量。(参见“Exporting an Environment Variable in Ruby”)
答案 0 :(得分:2)
s3sh
只是AWS :: S3 gem的包装器,所以你过于复杂。你不需要外出;你可以使用Ruby:
require 'right_aws'
s3 = RightAws::S3Interface.new(S3ID, S3KEY)
s3.copy(SRCBUCKET, FILE, DESTBUCKET, FILE)