Ruby1.9系からsystemコマンドで環境変数を設定できるようになりました。
まずは普通のsystemコマンドを見て行きます。
>> require 'dotenv' #=> true >> Dotenv.load #=> {"USER_NAME"=>"Den2Taro", "PASSWORD"=>"Unique and Exciting Campus", "SENSOR"=>"123"} >> puts ENV['USER_NAME'] Den2Taro #=> nil >> system 'echo $USER_NAME' Den2Taro #=> true >> system 'echo `expr $SENSOR + 1`' 124 #=> true
シンボルでの記述は無理ぽいです
>> system({ALPHA: '20'}, 'echo `expr $ALPHA + 20`') TypeError: no implicit conversion of Symbol into String
さて本題。
systemメソッドでは内部で環境変数を設定できます。
>> system({'ALPHA' => '20'}, 'echo `expr $ALPHA + 20`') 40 #=> true
更に、これは一時的なものでメソッドの外で呼び出しても無効です。
>> p ENV['ALPHA'] nil #=> nil