class Aruba::Platforms::WindowsEnvironmentVariables
Windows is case-insensitive when it accesses its environment variables. That means that at the Windows command line:
C:>set Path C:>Path=.;.\bin;c:\rubys\ruby-2.1.6-p336\bin; C:>set PATH C:>Path=.;.\bin;c:\rubys\ruby-2.1.6-p336\bin;
If you access environment variables through ENV, you can access values no matter the case of the key:
irb: > ENV["Path"] => ".;.\bin;c:\rubys\ruby-2.1.6-p336\bin;" irb: > ENV["Path"] => ".;.\bin;c:\rubys\ruby-2.1.6-p336\bin;"
But if you copy the ENV to a hash, Ruby treats the keys as case sensitive:
irb: > env_copy = ENV.to_hash => {"ALLUSERSPROFILE"=>"C:\\ProgramData", "ANSICON"=>"119x1000 (119x58)", "ANSICON_DEF"=>"7", APPDATA"=>"C:\\Users\\blorf\\AppData\\Roaming", ....} irb: > env["Path"] => ".;.\bin;c:\rubys\ruby-2.1.6-p336\bin;" irb: > env["PATH"] => nil
Thus we turn all of the environment variable keys to upper case so that aruba is ensured that accessing environment variables with upper case keys will always work.
Public Class Methods
new(env = ENV.to_hash)
click to toggle source
# File lib/aruba/platforms/windows_environment_variables.rb, line 36 def initialize(env = ENV.to_hash) @actions = [] @env = if RUBY_VERSION <= '1.9.3' # rubocop:disable Style/EachWithObject env.inject({}) { |a, (k,v)| a[k.to_s.upcase] = v; a } # rubocop:enable Style/EachWithObject else env.each_with_object({}) { |(k,v), a| a[k.to_s.upcase] = v } end end
Public Instance Methods
[](name)
click to toggle source
Calls superclass method
Aruba::Platforms::UnixEnvironmentVariables#[]
# File lib/aruba/platforms/windows_environment_variables.rb, line 68 def [](name) super(name.upcase) end
[]=(name, value)
click to toggle source
Calls superclass method
Aruba::Platforms::UnixEnvironmentVariables#[]=
# File lib/aruba/platforms/windows_environment_variables.rb, line 72 def []=(name, value) super(name.upcase, value) end
append(name, value)
click to toggle source
Calls superclass method
Aruba::Platforms::UnixEnvironmentVariables#append
# File lib/aruba/platforms/windows_environment_variables.rb, line 76 def append(name, value) super(name.upcase, value) end
delete(name, value)
click to toggle source
Calls superclass method
Aruba::Platforms::UnixEnvironmentVariables#delete
# File lib/aruba/platforms/windows_environment_variables.rb, line 84 def delete(name, value) super(name.upcase, value) end
fetch(name, default = UnixEnvironmentVariables::UNDEFINED)
click to toggle source
Calls superclass method
Aruba::Platforms::UnixEnvironmentVariables#fetch
# File lib/aruba/platforms/windows_environment_variables.rb, line 60 def fetch(name, default = UnixEnvironmentVariables::UNDEFINED) super(name.upcase, default) end
key?(name)
click to toggle source
Calls superclass method
Aruba::Platforms::UnixEnvironmentVariables#key?
# File lib/aruba/platforms/windows_environment_variables.rb, line 64 def key?(name) super(name.upcase) end
prepend(name, value)
click to toggle source
Calls superclass method
Aruba::Platforms::UnixEnvironmentVariables#prepend
# File lib/aruba/platforms/windows_environment_variables.rb, line 80 def prepend(name, value) super(name.upcase, value) end
update(other_env, &block)
click to toggle source
Calls superclass method
Aruba::Platforms::UnixEnvironmentVariables#update
# File lib/aruba/platforms/windows_environment_variables.rb, line 48 def update(other_env, &block) other_env = if RUBY_VERSION <= '1.9.3' # rubocop:disable Style/EachWithObject other_env.inject({}) { |a, (k,v)| a[k.to_s.upcase] = v; a } # rubocop:enable Style/EachWithObject else other_env.each_with_object({}) { |(k,v), a| a[k.to_s.upcase] = v } end super(other_env, &block) end