Быстрая версия (для тех, кто знаком с Mongoid & Sinatra ) : Если это не , то Psyche / Syck YAML-синтаксический анализ, то почему else Могу ли я получить эту ошибку при попытке подключиться к базе данных MongoDB с помощью Mongoid? (Или, может быть, это проблема , и в этом случае, как мне исправить мой файл mongoid.yml, размещенный ниже?)
Более подробная (исходная) версия :
У меня есть приложение Sinatra, взаимодействующее с базой данных MongoDB через Mongoid:
configure do
Mongoid.load!('config/mongoid.yml')
end
А мой файл mongoid.yml выглядит так:
development:
host: localhost
database: project_development
test:
host: localhost
database: project_test
production:
uri: <%= ENV['MONGOLAB_URI'] %>
Всякий раз, когда я пытаюсь каким-либо образом взаимодействовать с базой данных, я получаю сообщение об ошибке db_name должно быть строка или символ .
Итак, я нашел много информации об этом в Google; но все, что я могу найти, похоже, указывает на то, что проблема связана с Ruby, который теперь использует синтаксический анализатор Psyche YAML вместо старого синтаксического анализатора Syck. Я не думаю, что это действительно актуально в моем случае, потому что, насколько я могу судить, вышеупомянутый YAML должен быть прекрасно проанализирован любым из них.
(Что бы это ни стоило, я попробовал с помощью трюка YAML :: ENGINE.yamler = 'syck'
безрезультатно. Я получил точно такое же сообщение об ошибке.)
Когда я меняю конфигурацию на эту:
Mongoid.configure do |config|
name = "project_development"
host = "localhost"
config.master = Mongo::Connection.new.db(name)
end
... тогда все работает нормально. Итак, я знаю, что MongoDB работает на моей машине. В частности, когда я использую файл YAML, все идет наперекосяк.
И что дает?