I have this piece of simple code:

----------------------------------------------
def foo
    return 5
end

a = {:gr => false, :und => false, :det => true, :sta => false, :inv => 
false}
puts a.inspect
----------------------------------------------

when I execute it i get a totally unordered hash:

----------------------------------------------
ruby pro.rb
{:inv=>false, :gr=>false, :und=>false, :det=>true, :sta=>false}
----------------------------------------------

Now, i delete the foo function from the code (the foo function don't do 
nothing at all), and i get a well ordered hash:

----------------------------------------------
ruby pro.rb
{:gr=>false, :und=>false, :det=>true, :sta=>false, :inv=>false}
----------------------------------------------


What's happening? all my code is behaving wrong because of that.