Ответ 1
Psych - это новый парсер YAML, который предположительно лучше, но не может объединить хэш-ключи.
Это должно помочь http://pivotallabs.com/users/mkocher/blog/articles/1692-yaml-psych-and-ruby-1-9-2-p180-here-there-be-dragons
Мы просто обновили наши виртуальные машины до того, что я считал идентичной конфигурацией ruby (через RVM... Ruby 1.9.2, Rails 3.0.7, DataMapper 1.1.0). Самая большая разница заключалась в том, что мы перешли от MySQL 5.0 до 5.1.
По какой-то причине тот же самый код /database.yml, который работал над нашими старыми виртуальными машинами, теперь терпит неудачу в наших новых, когда он пытается подключиться к базе данных.
Проблема в том, что этот YAML:
mysql_defaults: &mysql_defaults
adapter: mysql
encoding: UTF-8
username: user
password: pass
host: localhost
development:
<<: *mysql_defaults
database: devdb
production:
<<: *mysql_defaults
database: productiondb
host: master.db.site.com
Просто расширяется до:
"mysql_defaults" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost"
},
"development" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost"
},
"production" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost"
}
Вместо:
"mysql_defaults" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost"
},
"development" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"localhost",
"database"=>"devdb"
},
"production" => {
"adapter"=>"mysql",
"encoding"=>"UTF-8",
"username"=>"user",
"password"=>"pass",
"host"=>"master.db.site.com",
"database"=>"productiondb"
}
Кто-нибудь испытал это раньше?
В соответствии с Gemfile.lock(я удалил его и снова запустил установку пакета, просто для здравого смысла), все установленные зависимости одинаковы (т.е. Gemfile.lock не отличается от старой и новой установки). Также не работает database.yml.
Psych - это новый парсер YAML, который предположительно лучше, но не может объединить хэш-ключи.
Это должно помочь http://pivotallabs.com/users/mkocher/blog/articles/1692-yaml-psych-and-ruby-1-9-2-p180-here-there-be-dragons
Так как вы сделали обновление, возможно, что ваши права доступа к базе данных перепутались. Попробуйте просмотреть, что у вас есть необходимые разрешения, то есть на машине, на которой находится код, есть привилегии для подключения и изменения на машине базы данных. Глядя на вас database.yml, это должно быть что-то вроде "
GRANT ALL PRIVILEGES ON productionbd.* to 'user'@'<app-server-ip>' identified by 'pass';