Reputation: 579
Environment Rails 3.2.14 Ruby 1.9.3p448 Ubuntu 12.04 bundler version 1.3.5
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.
I have tried psych parser and syck parser. Its just the error trace is different in syck parser, but problem persists.
Below is just the example. Actual configuration is different. causes error when database.yml is something like this:
default: &default
host: localhost
...
development:
<< *default
pool: 5
...
Works totally fine when database.yml file is something like this:
development:
host: localhost
pool: 5
Below is the error trace:
/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 <class:Railtie>'
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 <class:Railtie>'
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 `<top (required)>'
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 `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
...
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.
development: &development
adapter: mysql2
database: <%= $dev_main_database %>
username: root
password:
timeout: 60000
host: <%= $dev_linux_machine_name %>
encoding: utf8
test:
adapter: mysql2
database: ecpmain_test
username: root
password:
timeout: 60000
host: tecpdb
encoding: utf8
staging: &staging
adapter: mysql2
database: ecpmain_staging
username: sa
password: woofer8
timeout: 60000
host: <%= $staging_database_host %>
encoding: utf8
production: &development
adapter: mysql2
database: <%= $dev_main_database %>
username: root
password:
timeout: 60000
host: <%= $dev_linux_machine_name %>
encoding: utf8
# background_process_development:
# <<: *development
# background_process_staging:
# <<: *staging
# background_process_production:
# <<: *production
doc_finals_development: &doc_finals_development
adapter: mysql2
database: <%= $dev_docs_database %>
username: sa
password: woofer8
timeout: 60000
host: <%= $dev_linux_machine_name %>
encoding: utf8
doc_finals_test:
adapter: mysql2
database: ecpdocs_test
username: sa
password: woofer8
timeout: 60000
host: tecpdb
encoding: utf8
doc_finals_staging: &doc_finals_staging
adapter: mysql2
database: ecpdocs_staging
username: sa
password: woofer8
timeout: 60000
host: <%= $staging_database_host %>
encoding: utf8
doc_finals_production: &doc_finals_production
adapter: mysql2
database: ecpdocs_production
username: sa
password: nash!@w
timeout: 60000
host: pecpdb3
encoding: utf8
# doc_finals_background_process_development:
# <<: *doc_finals_development
# doc_finals_background_process_staging:
# <<: *doc_finals_staging
# doc_finals_background_process_production:
# <<: *doc_finals_production
logging_development: &logging_development
adapter: mysql2
database: <%= $dev_logging_database %>
username: sa
password: woofer8
timeout: 60000
host: <%= $dev_linux_machine_name %>
encoding: utf8
logging_test:
adapter: mysql2
database: ecplogging_test
username: sa
password: woofer8
timeout: 60000
host: tecpdb
encoding: utf8
logging_staging: &logging_staging
adapter: mysql2
database: ecplogging_staging
username: sa
password: woofer8
timeout: 60000
host: <%= $staging_database_host %>
encoding: utf8
logging_production: &logging_production
adapter: mysql2
database: ecplogging_production
username: sa
password: nash!@w
timeout: 60000
host: pecpdb3
encoding: utf8
# logging_background_process_development:
# <<: *logging_development
# logging_background_process_staging:
# <<: *logging_staging
# logging_background_process_production:
# <<: *logging_production
Upvotes: 2
Views: 5455
Reputation: 1
I was getting the same error but the bad alias was for development
instead of production
The way I solved the issue was by commenting the following lines in my config/webpack.yml
file
optimization:
<<: *development
Upvotes: 0
Reputation: 4879
I see no problem with the syntax you have there. The error you have posted seems to indicate you have mistakenly done this somewhere:
development:
<< *production
pool: 5
Can you post the complete database.yml
file that has the problem? Redact it as much as you need, but I think the problem lies somewhere in the data that wasn't posted.
EDIT
I was correct, you were trying to make production inherit from a block that didn't exist:
production: &development
...
I didn't try it to verify, but it could be that ruby 1.8's YAML parser is more forgiving about these types of errors.
Anyways, I went ahead and DRYed up that file for you and made sure that it parsed correctly:
defaults: &defaults
adapter: mysql2
username: root
password:
timeout: 60000
encoding: utf8
development: &development
<<: *defaults
database: <%= $dev_main_database %>
host: <%= $dev_linux_machine_name %>
test:
<<: *defaults
host: tecpdb
database: ecpmain_test
staging: &staging
<<: *defaults
database: ecpmain_staging
username: sa
password: woofer8
host: <%= $staging_database_host %>
production: &production
<<: *defaults
database: <%= $dev_main_database %>
host: <%= $dev_linux_machine_name %>
background_process_development:
<<: *development
background_process_staging:
<<: *staging
background_process_production:
<<: *production
doc_finals_defaults: &doc_finals_defaults
adapter: mysql2
username: sa
password: woofer8
timeout: 60000
encoding: utf8
doc_finals_development: &doc_finals_development
<<: *doc_finals_defaults
database: <%= $dev_docs_database %>
host: <%= $dev_linux_machine_name %>
doc_finals_test:
<<: *doc_finals_defaults
database: ecpdocs_test
host: tecpdb
doc_finals_staging: &doc_finals_staging
<<: *doc_finals_defaults
adapter: mysql2
database: ecpdocs_staging
host: <%= $staging_database_host %>
doc_finals_production: &doc_finals_production
<<: *doc_finals_defaults
database: ecpdocs_production
username: sa
password: nash!@w
host: pecpdb3
doc_finals_background_process_development:
<<: *doc_finals_development
doc_finals_background_process_staging:
<<: *doc_finals_staging
doc_finals_background_process_production:
<<: *doc_finals_production
logging_defaults: &logging_defaults
adapter: mysql2
username: sa
password: woofer8
timeout: 60000
encoding: utf8
logging_development: &logging_development
<<: *logging_defaults
database: <%= $dev_logging_database %>
host: <%= $dev_linux_machine_name %>
logging_test:
<<: *logging_defaults
database: ecplogging_test
host: tecpdb
logging_staging: &logging_staging
<<: *logging_defaults
database: ecplogging_staging
host: <%= $staging_database_host %>
logging_production: &logging_production
<<: *logging_defaults
database: ecplogging_production
username: sa
password: nash!@w
host: pecpdb3
logging_background_process_development:
<<: *logging_development
logging_background_process_staging:
<<: *logging_staging
logging_background_process_production:
<<: *logging_production
Upvotes: 3