title: Class variable is getting overridden
body: <p>I've run into a <em>weird</em> problem using hashes as a class variable.  After I run the following code, I expect that the class variable <code>@@class_hash</code> should contain <code>{:one =&gt; {'a' =&gt; 'one'}, :two =&gt; {'a' =&gt; 'two'}}</code>.</p>
  
  <p>However, after I run this code, <code>@@class_hash</code> is <code>{:one =&gt; {'a' =&gt; 'two'}, :two =&gt; {'a' =&gt; 'two'}}</code>.</p>
  
  <p>Why is that?</p>
  
  <pre><code>class Klass
    @@class_hash = Hash.new({})
  
    def fun1
      @@class_hash[:one]['a'] = 'one'
    end
  
    def fun2
      @@class_hash[:two]['a'] = 'two'
    end
  
    def class_hash
      @@class_hash
    end
  end
  
  klass = Klass.new
  
  klass.fun1
  h1 = klass.class_hash
  raise "h2[:one]['a'] should be 'one', not 'two'" if h1[:one]['a'] == 'two'
  klass.fun2
  h2 = klass.class_hash
  raise "h2[:one]['a'] should be 'one', not 'two'" if h2[:one]['a'] == 'two'
  </code></pre>