我需要爲進程設置環境變量時將其外殼取出。我想這一個班輪:在設置環境變量時從紅寶石中取出殼體
system "RBENV_VERSION=system ruby extconf.rb"
這句法工作在shell腳本而不是從紅寶石。(更新:原來這句法紅寶石作品畢竟,但是我沒有看到它的效果,由於我的特殊用例)
所以我這樣做:
rbenv_version = ENV['RBENV_VERSION']
ENV['RBENV_VERSION'] = 'system'
begin
system "ruby extconf.rb"
ensure
ENV['RBENV_VERSION'] = rbenv_version
end
我被迫這麼長時間的表達,因爲如果它已經有一個值,我不想永久覆蓋環境變量。
任何縮短到你的想法?
你達人。 \ o/ – mislav
這是一個很好的答案。 ['Kernel#system'](http://ruby-doc.org/core-1.9.3/Kernel.html#method-i-system)的文檔在這個功能上還不夠清楚。非常好。 – Phrogz
對於ruby 1.8,看看@ rtomayko的POSIX :: Spawn,在另一個評論中鏈接。 – alxndr