1

我不断收到 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 上运行它更有意义。

谢谢你的帮助,达里尔。

4

0 回答 0