mis*_*lav 20 ruby shell environment
我需要在为其设置环境变量时为一个进程进行shell.我试过这个单行:
system "RBENV_VERSION=system ruby extconf.rb"
Run Code Online (Sandbox Code Playgroud)
此语法适用于shell脚本,但不适用于ruby.(更新:事实证明这个语法毕竟是来自ruby,但由于我的特殊用例,我没有看到它的效果.)
所以我这样做:
rbenv_version = ENV['RBENV_VERSION']
ENV['RBENV_VERSION'] = 'system'
begin
system "ruby extconf.rb"
ensure
ENV['RBENV_VERSION'] = rbenv_version
end
Run Code Online (Sandbox Code Playgroud)
我被迫这么长的表达式,因为我不想永久覆盖环境变量,如果它已经有一个值.
想到什么更短的东西?
Avd*_*vdi 67
system({"MYVAR" => "42"}, "echo $MYVAR")
Run Code Online (Sandbox Code Playgroud)
system
接受任何接受的论据Process.spawn
.
小智 6
Ruby 1.9包含Process::spawn
允许提供environ哈希的包含.
Process::spawn
也是为基础system
,exec
,popen
等
你可以传递一个环境给每个.
在Ruby 1.8下,您可能需要考虑
提供相同接口的POSIX::Spawn
库
归档时间: |
|
查看次数: |
9800 次 |
最近记录: |