Index: IronRuby.Libraries/Builtins/EnvOps.cs =================================================================== --- IronRuby.Libraries/Builtins/EnvOps.cs (revision 0) +++ IronRuby.Libraries/Builtins/EnvOps.cs (revision 0) @@ -0,0 +1,21 @@ + +namespace Ruby.Builtins +{ + [RubyClass("ENV", Extends = typeof(ENV))] + public static class EnvOps + { + [RubyMethod("[]")] + public static MutableString getenv(object/*!*/ self, MutableString/*!*/ name) + { + return new MutableString(System.Environment.GetEnvironmentVariable(name)); + } + + [RubyMethod("delete")] + public static MutableString delete(object/*!*/ self, MutableString/*!*/ name) + { + string val = System.Environment.GetEnvironmentVariable(name); + System.Environment.SetEnvironmentVariable(name, null); + return new MutableString(val); + } + } +} Index: ironruby/Builtins/ENV.cs =================================================================== --- ironruby/Builtins/ENV.cs (revision 0) +++ ironruby/Builtins/ENV.cs (revision 0) @@ -0,0 +1,5 @@ + +namespace Ruby.Builtins { + public class ENV { + } +} Index: ironruby/Runtime/RubyExecutionContext.cs =================================================================== --- ironruby/Runtime/RubyExecutionContext.cs (revision 76) +++ ironruby/Runtime/RubyExecutionContext.cs (working copy) @@ -217,6 +217,8 @@ _objectClass.SetConstant("STDIN", StandardInput); _objectClass.SetConstant("STDOUT", StandardOutput); _objectClass.SetConstant("STDERR", StandardErrorOutput); + + _objectClass.SetConstant("ENV", new ENV()); } private void InitializeFileDescriptors() {