title: Ruby and rails yaml parser error for database.yml
body: <p>Environment
  Rails 3.2.14
  Ruby 1.9.3p448
  Ubuntu 12.04
  bundler version 1.3.5</p>
  
  <p>There is some problem with the way ruby 1.9.3 is loading the YAML. If I dry up the code in databse.yml file the rails console, server, generate etc commands fails. If I remove those defaults then everything works fine.</p>
  
  <p>I have tried psych parser and syck parser. Its just the error trace is different in syck parser, but problem persists.</p>
  
  <p>Below is just the example. Actual configuration is different.
  causes error when database.yml is something like this:</p>
  
  <pre><code>default: &amp;default
    host: localhost
    ...
  
  development:
    &lt;&lt; *default
    pool: 5
    ...
  </code></pre>
  
  <p>Works totally fine when database.yml file is something like this:</p>
  
  <pre><code>development:
    host: localhost
    pool: 5
  </code></pre>
  
  <p>Below is the error trace:</p>
  
  <pre><code>/home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:246:in `block in visit_Psych_Nodes_Alias': Unknown alias: production (Psych::BadAlias)
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:246:in `fetch'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:246:in `visit_Psych_Nodes_Alias'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:20:in `accept'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:264:in `block in revive_hash'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:258:in `each'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:258:in `each_slice'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:258:in `revive_hash'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:141:in `visit_Psych_Nodes_Mapping'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/delayed_job-4.0.0/lib/delayed/psych_ext.rb:133:in `visit_Psych_Nodes_Mapping_with_class'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:20:in `accept'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:273:in `block in revive_hash'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:258:in `each'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:258:in `each_slice'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:258:in `revive_hash'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:141:in `visit_Psych_Nodes_Mapping'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/delayed_job-4.0.0/lib/delayed/psych_ext.rb:133:in `visit_Psych_Nodes_Mapping_with_class'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:20:in `accept'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:238:in `visit_Psych_Nodes_Document'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/visitor.rb:15:in `visit'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/visitor.rb:5:in `accept'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/visitors/to_ruby.rb:20:in `accept'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych/nodes/node.rb:35:in `to_ruby'
      from /home/naveen/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych.rb:128:in `load'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/application/configuration.rb:115:in `database_configuration'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activerecord-3.2.13/lib/active_record/railtie.rb:78:in `block (2 levels) in &lt;class:Railtie&gt;'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/lazy_load_hooks.rb:26:in `block in on_load'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/lazy_load_hooks.rb:25:in `each'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/lazy_load_hooks.rb:25:in `on_load'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activerecord-3.2.13/lib/active_record/railtie.rb:74:in `block in &lt;class:Railtie&gt;'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `instance_exec'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `run'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/initializable.rb:55:in `block in run_initializers'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `each'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `run_initializers'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/application.rb:136:in `initialize!'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/railtie/configurable.rb:30:in `method_missing'
      from /home/naveen/workspace/econveyance/EconveyancePro3/config/environment.rb:6:in `&lt;top (required)&gt;'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/application.rb:103:in `require_environment!'
      from /home/naveen/.rvm/gems/ruby-1.9.3-p448@EconveyancePro3/gems/railties-3.2.13/lib/rails/commands.rb:40:in `&lt;top (required)&gt;'
      from script/rails:6:in `require'
      from script/rails:6:in `&lt;main&gt;'
  
    ...
  </code></pre>
  
  <p>Below is the complete database.yml file. If I uncomment the commented part then this error shows up. where as with ruby 1.8.7 and rails 2.3.x everything was working fine.</p>
  
  <pre><code>development: &amp;development
    adapter: mysql2
    database: &lt;%= $dev_main_database %&gt;
    username: root
    password:
    timeout: 60000
    host: &lt;%= $dev_linux_machine_name %&gt;
    encoding: utf8
  
  test:
    adapter: mysql2
    database: ecpmain_test
    username: root
    password:
    timeout: 60000
    host: tecpdb
    encoding: utf8
  
  staging: &amp;staging
    adapter: mysql2
    database: ecpmain_staging
    username: sa
    password: woofer8
    timeout: 60000
    host: &lt;%= $staging_database_host %&gt;
    encoding: utf8
  
  production: &amp;development
    adapter: mysql2
    database: &lt;%= $dev_main_database %&gt;
    username: root
    password:
    timeout: 60000
    host: &lt;%= $dev_linux_machine_name %&gt;
    encoding: utf8
  
  # background_process_development:
  #   &lt;&lt;: *development
  
  # background_process_staging:
  #   &lt;&lt;: *staging
  
  # background_process_production:
  #   &lt;&lt;: *production
  
  doc_finals_development: &amp;doc_finals_development
    adapter: mysql2
    database: &lt;%= $dev_docs_database %&gt;
    username: sa
    password: woofer8
    timeout: 60000
    host: &lt;%= $dev_linux_machine_name %&gt;
    encoding: utf8
  
  doc_finals_test:
    adapter: mysql2
    database: ecpdocs_test
    username: sa
    password: woofer8
    timeout: 60000
    host: tecpdb
    encoding: utf8
  
  doc_finals_staging: &amp;doc_finals_staging
    adapter: mysql2
    database: ecpdocs_staging
    username: sa
    password: woofer8
    timeout: 60000
    host: &lt;%= $staging_database_host %&gt;
    encoding: utf8
  
  doc_finals_production: &amp;doc_finals_production
    adapter: mysql2
    database: ecpdocs_production
    username: sa
    password: nash!@w
    timeout: 60000
    host: pecpdb3
    encoding: utf8
  
  # doc_finals_background_process_development:
  #   &lt;&lt;: *doc_finals_development
  
  # doc_finals_background_process_staging:
  #   &lt;&lt;: *doc_finals_staging
  
  # doc_finals_background_process_production:
  #   &lt;&lt;: *doc_finals_production
  
  logging_development: &amp;logging_development
    adapter: mysql2
    database: &lt;%= $dev_logging_database %&gt;
    username: sa
    password: woofer8
    timeout: 60000
    host: &lt;%= $dev_linux_machine_name %&gt;
    encoding: utf8
  
  logging_test:
    adapter: mysql2
    database: ecplogging_test
    username: sa
    password: woofer8
    timeout: 60000
    host: tecpdb
    encoding: utf8
  
  logging_staging: &amp;logging_staging
    adapter: mysql2
    database: ecplogging_staging
    username: sa
    password: woofer8
    timeout: 60000
    host: &lt;%= $staging_database_host %&gt;
    encoding: utf8
  
  logging_production: &amp;logging_production
    adapter: mysql2
    database: ecplogging_production
    username: sa
    password: nash!@w
    timeout: 60000
    host: pecpdb3
    encoding: utf8
  
  # logging_background_process_development:
  #   &lt;&lt;: *logging_development
  
  # logging_background_process_staging:
  #   &lt;&lt;: *logging_staging
  
  # logging_background_process_production:
  #   &lt;&lt;: *logging_production
  </code></pre>