Issue #13799 has been updated by sylvain.joyeux (Sylvain Joyeux).


Fair enough.

In this case, I would ideally expect #dup to not exist at all (since the result is not what #dup is expected to return, which is a functional copy of the receiver), or at least raise.

----------------------------------------
Bug #13799: ENV.dup returns a plain Object
https://bugs.ruby-lang.org/issues/13799#change-66130

* Author: sylvain.joyeux (Sylvain Joyeux)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 2.1.9, 2.2.5, 2.3.3, 2.4.1
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
I was doing ENV.dup to get a copy of the environment that can be modified without affecting ENV. However, ENV.dup returns a plain Object

~~~
irb(main):005:0> ENV.dup
=> #<Object:0x00000002024fc0>
irb(main):006:0> ENV.dup['PATH']
NoMethodError: undefined method `[]' for #<Object:0x000000020446e0>
        from (irb):6
        from /home/doudou/.rbenv/versions/2.4.1/bin/irb:11:in `<main>'
irb(main):007:0> 
~~~

The only way I found to get a copy is Hash[ENV]



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>