object ENV

[edit]

extend: Enumerable

要約

環境変数を表すオブジェクト。Hash と同様のインターフェースを持ちます。ただし、Hash と異なり、ENV のキーと値には文字列しかとることができません。

また、ENV で得られる文字列は Object#freeze されています。



p ENV['TERM'].frozen?  # => true

Windows では環境変数は大文字、小文字を区別しません。(cygwin を除く)



ENV['OS'] # => Windows_NT
ENV['os'] # => Windows_NT

目次

特異メソッド

特異メソッド

self[key] -> String[permalink][rdoc][edit]

key に対応する環境変数の値を返します。該当する環境変数が存在しない時には nil を返します。

[PARAM] key:
環境変数名を指定します。文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。

ENV['PATH']           # => "/usr/local/bin:/usr/bin:/bin:/usr/X11/bin"
ENV['NON_EXIST_KEY']  # => nil
self[key] = value[permalink][rdoc][edit]
store(key, value) -> String

key に対応する環境変数の値を value にします。 value が nil の時、key に対応する環境変数を取り除きます。

[PARAM] key:
環境変数名を指定します。文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。
[PARAM] value:
置き換えるべき値を指定します。文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。
[RETURN]
value を返します。

ENV['NEW_KEY'] = 'some_value'
ENV['NEW_KEY'] # => 'some_value'
ENV.store('NEW_KEY', nil) # => nil
ENV.has_key?('NEW_KEY') # => false
assoc(key) -> Array | nil[permalink][rdoc][edit]

自身が与えられたキーに対応する要素を持つとき、見つかった要素のキーと値のペアを配列として返します。

[PARAM] key:
検索するキーを指定します。

[SEE_ALSO] Hash#assoc

clear -> self[permalink][rdoc][edit]

環境変数をすべてクリアします。self を返します。


ENV.clear
p ENV # => {}
clone(freeze: true) -> object[permalink][rdoc][edit]

ENV オブジェクトの複製を作成して返します。

ENV は OS のプロセス全体で共有される環境変数を操作するラッパーオブジェクトなので、複製は有用ではありません。そのため、3.1 からは複製で環境変数を操作するときに deprecated 警告がでます。

テスト実行中に環境変数を退避する用途には ENV.to_h を使用してください。


saved_env = ENV.to_h
# (テストなど)
ENV.replace(saved_env)

[SEE_ALSO] Object#clone

[SEE_ALSO] ENV.dup

delete(key) -> String | nil[permalink][rdoc][edit]
delete(key) {|key| ... } -> String | nil

key に対応する環境変数を取り除きます。取り除かれた環境変数の値を返しますが、key に対応する環境変数が存在しない時には nil を返します。

ブロックが与えられた時には key にマッチするものがなかった時に評価されます。

[PARAM] key:
環境変数名を指定します。文字列で指定します。文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。

ENV['TEST'] = 'foo'
ENV.delete('TEST')  # => "foo"
ENV.delete('TEST') { |key| puts "#{key} is not found in ENV" } # TEST is not found in ENV
delete_if {|key, value| ... } -> ENV[permalink][rdoc][edit]
reject! {|key, value| ... } -> ENV | nil
delete_if -> Enumerator
reject! -> Enumerator

key と value を引数としてブロックを評価した値が真である時、環境変数を削除します。

reject! は要素に変化がなければ nil を返します。


ENV['FOO'] = 'bar'
ENV.delete_if { |key, value| key == 'FOO' && value == 'bar' } # => ENV
ENV.reject! { |key, value| key == 'FOO' && value == 'bar' } # => nil
dup -> ()[permalink][rdoc][edit]

TypeErrorを発生させます。

3.0 以前では Object.new と同様の ENV とは無関係の有用ではないオブジェクトを返していたため、3.1 からは例外が発生するようになりました。詳細はENV.cloneを参照してください。

[SEE_ALSO] ENV.clone

each -> Enumerator[permalink][rdoc][edit]
each_pair -> Enumerator
each {|key, value| ... } -> self
each_pair {|key, value| ... } -> self

key と value を引数としてブロックを評価します。


ENV['FOO'] = 'bar'
ENV.each do |key, value|
  p "value is #{value}" if key == 'FOO' # => "value is bar"
end
# => ENV
each_key -> Enumerator[permalink][rdoc][edit]
each_key {|key| ... } -> self

key を引数としてブロックを評価します。


ENV['FOO'] = 'bar'
ENV.each_key do |key|
  p "key #{key} detected" if key == 'FOO'
end
# "key FOO detected"
each_value -> Enumerator[permalink][rdoc][edit]
each_value {|value| ... } -> self

value を引数としてブロックを評価します。

empty? -> bool[permalink][rdoc][edit]

環境変数がひとつも定義されていない時真を返します。

except(*keys) -> Hash[permalink][rdoc][edit]

引数で指定された以外のキーとその値だけを含む Hash を返します。


ENV                       #=> {"LANG"=>"en_US.UTF-8", "TERM"=>"xterm-256color", "HOME"=>"/Users/rhc"}
ENV.except("TERM","HOME") #=> {"LANG"=>"en_US.UTF-8"}

[SEE_ALSO] Hash#except, ENV.slice

fetch(key) -> String[permalink][rdoc][edit]
fetch(key, default) -> String
fetch(key) {|key| ... } -> String

key に関連づけられた値を返します。該当するキーが登録されていない時には、引数 default が与えられていればその値を、ブロックが与えられていればそのブロックを評価した値を返します。そのいずれでもなければ例外が発生します。

[PARAM] key:
環境変数の名前を指定します。 文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。
[PARAM] default:
keyに対応する環境変数の値がないときにこの値を返します。
[EXCEPTION] KeyError:
引数defaultもブロックも与えられてない時、キーの探索に失敗すると発生します。
select -> Enumerator[permalink][rdoc][edit]
select {|key, value| ... } -> Hash
filter -> Enumerator
filter {|key, value| ... } -> Hash

環境変数名と値についてブロックを評価し、真を返したものを集めたハッシュを返します。

keep_if {|key, value| ... } -> ENV[permalink][rdoc][edit]
select! {|key, value| ... } -> ENV | nil
filter! {|key, value| ... } -> ENV | nil
keep_if -> Enumerator
select! -> Enumerator
filter! -> Enumerator

キーと値を引数としてブロックを評価した結果が真であるような要素を環境変数に残します。

keep_if は常に self を返します。 select! と filter! はオブジェクトが変更された場合に self を、されていない場合に nil を返します。

ブロックが省略された場合には Enumerator を返します。

[SEE_ALSO] ENV.delete_if,ENV.reject!, Hash#keep_if, Hash#select!,

freeze -> ()[permalink][rdoc][edit]

ENV.freeze は環境変数の変更を禁止できないため、TypeErrorを発生させます。

has_key?(key) -> bool[permalink][rdoc][edit]
include?(key) -> bool
key?(key) -> bool
member?(key) -> bool

key で指定される環境変数が存在する時、真を返します。

[PARAM] key:
環境変数の名前を指定します。文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。
has_value?(val) -> bool[permalink][rdoc][edit]
value?(val) -> bool

val を値として持つ環境変数が存在する時、真を返します。

[PARAM] val:
値を指定します。文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。
inspect -> String[permalink][rdoc][edit]

ENV オブジェクトを文字列化します。 Hash#inspect と同じように動作します。

invert -> Hash[permalink][rdoc][edit]

環境変数の値をキー、名前を値とした Hash を生成して返します。

key(val) -> String | nil[permalink][rdoc][edit]

val に対応するキーを返します。対応する要素が存在しない時には nil を返します。

[PARAM] val:
値を指定します。文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。
keys -> [String][permalink][rdoc][edit]

全環境変数の名前の配列を返します。

length -> Integer[permalink][rdoc][edit]
size -> Integer

環境変数の数を返します。

update(other) -> ENV[permalink][rdoc][edit]
update(other) {|key, self_val, other_val| ... } -> ENV
merge!(other) -> ENV
merge!(other) {|key, self_val, other_val| ... } -> ENV

ハッシュ other の内容を環境変数にマージします。重複するキーに対応する値は other の内容で上書きされます。

self と other に同じキーがあった場合はブロック付きか否かで判定方法が違います。ブロック付きのときはブロックを呼び出してその返す値を重複キーに対応する値にします。ブロック付きでない場合は常に other の値を使います。

[PARAM] other:
上書きするハッシュを指定します。
rassoc(value) -> Array | nil[permalink][rdoc][edit]

自身が与えられた値に対応する要素を持つとき、見つかった要素のキーと値のペアを配列として返します。

[PARAM] value:
検索する値を指定します。

[SEE_ALSO] Hash#rassoc

rehash -> nil[permalink][rdoc][edit]

何もしません。nilを返します。

reject -> Enumerator[permalink][rdoc][edit]
reject {|key, value| ... } -> Hash

環境変数のうち、ブロックを評価した値が真であるものをとり除きます。 Enumerable#reject と異なり Hash を返します。また、とり除いた結果は実際の環境変数に影響を与えません。


ENV['TEST'] = 'foo'
result = ENV.reject { |key, value| key == 'TEST' }
result['TEST'] # => nil
ENV['TEST'] # => "foo"
replace(hash) -> ENV[permalink][rdoc][edit]

環境変数を hash と同じ内容に変更します。 self を返します。

[PARAM] hash:
キーと値の対応関係を指定します。 to_hash でハッシュに変換されます。
shift -> [String, String] | nil[permalink][rdoc][edit]

環境変数を一つ取り除いて、それを名前と値の組の配列で返します。環境変数が一つも設定されていなければ nil を返します。

slice(*keys) -> Hash[permalink][rdoc][edit]

引数で指定されたキーとその値だけを含む Hash を返します。



ENV["foo"] = "bar"
ENV["baz"] = "qux"
ENV["bar"] = "rab"
ENV.slice()             # => {}
ENV.slice("")           # => {}
ENV.slice("unknown")    # => {}
ENV.slice("foo", "baz") # => {"foo"=>"bar", "baz"=>"qux"}

[SEE_ALSO] Hash#slice, ENV.except

to_a -> [[String, String]][permalink][rdoc][edit]

環境変数から [変数名, 値] となる 2 要素の配列の配列を生成します。

to_h -> Hash[permalink][rdoc][edit]
to_h {|name, value| block } -> Hash

環境変数の名前をキーとし、対応する値をもつハッシュを返します。

ブロックを指定すると各ペアでブロックを呼び出し、その結果をペアとして使います。

ブロック付きの例

ENV.to_h {|name, value| [name, value.size] }
to_hash -> Hash[permalink][rdoc][edit]

環境変数の名前をキーとし、対応する値をもつハッシュを返します。

to_s -> String[permalink][rdoc][edit]

環境変数を文字列化します。 Hash#to_s と同じように動作します。

values -> [String][permalink][rdoc][edit]

環境変数の全値の配列を返します。

values_at(*key) -> [String][permalink][rdoc][edit]

引数で指定されたキー(環境変数名)に対応する値の配列を返します。存在しないキーに対しては nil が対応します。

例:

ENV.update({'FOO' => 'foo', 'BAR' => 'bar'})
p ENV.values_at(*%w(FOO BAR BAZ))   # => ["foo", "bar", nil]
[PARAM] key:
環境変数名を指定します。文字列で指定します。文字列以外のオブジェクトを指定した場合は to_str メソッドによる暗黙の型変換を試みます。