我不断收到 Mongoid::Errors::InvalidDatabase - 数据库应该是 Mongo::DB,而不是 NilClass
来自我在本地开发但拒绝连接到 MongoHQ 的 padrino 应用程序。我使用的是 padrino 0.9.23 和 Mongoid 2.0.0。不知道这里出了什么问题。
#database.rb
require 'uri'
if ENV["MONGOHQ_URL"]
mongo_uri = URI.parse(ENV["MONGOHQ_URL"])
ENV['MONGOID_HOST'] = mongo_uri.host
ENV['MONGOID_PORT'] = mongo_uri.port.to_s
ENV["MONGOID_USERNAME"] = mongo_uri.user
ENV['MONGOID_PASSWORD'] = mongo_uri.password
ENV['MONGOID_DATABASE'] = mongo_uri.path.gsub("/", "")
else
host = 'localhost'
port = Mongo::Connection::DEFAULT_PORT
database_name = case Padrino.env
when :development then 'tweetup_dev'
when :production then 'tweetup'
when :test then 'tweetup_test'
end
end
通过 rake 任务进行的插入(测试数据库连接)和尝试从 heroku 中的数据库中提取的应用程序都不断失败,并出现以下错误:
2011-04-09T08:02:29+00:00 app[web.1]: Mongoid::Errors::InvalidDatabase
- Database should be a Mongo::DB, not NilClass.:
2011-04-09T08:02:29+00:00 app[web.1]: /app/.bundle/gems/ruby/1.9.1/
gems/mongoid-2.0.0/lib/mongoid/config.rb:195:in `master'
2011-04-09T08:02:29+00:00 app[web.1]: (eval):2:in `master'
我可以确认数据库已在 MongoHQ 上启动并运行,并且我通过 Heroku config --long details 提供的详细信息通过 MongoHQ 远程连接通过 Web 界面在其中创建了一个文档。
难倒在这一点上是什么问题。
有人对我在这里可能做错了什么有任何线索或指示吗?自 2.0.0 起,mongoid 中的各种配置选项是否已更改?我应该提到这是我第一次尝试将 MongoHQ 与 Mongoid 一起使用。
在这一点上,我将启动一个 Amazon EC2 实例并只使用本地主机 MongoDB,但最终在 heroku 和 MongoHQ 上运行它更有意义。
谢谢你的帮助,达里尔。