Ruby Sinatra-连接到mongoHQ上的mongoDB失败

Ruby Sinatra-连接到mongoHQ上的mongoDB失败,ruby,mongodb,sinatra,heroku,mongomapper,Ruby,Mongodb,Sinatra,Heroku,Mongomapper,这只是为了我的周末项目/学习,我对Sinatra和MongoDB非常陌生 我已经为mongoDB安装了gems,例如:mongo、mongo_mapper和mongoid 当我试图从localhost连接到MongoHQ上的数据库时,它遇到了这样一个错误: Mongo::ConnectionFailure at / failed to connect to any given host:port * file: connection.rb * location: connect

这只是为了我的周末项目/学习,我对Sinatra和MongoDB非常陌生

我已经为mongoDB安装了gems,例如:mongo、mongo_mapper和mongoid

当我试图从localhost连接到MongoHQ上的数据库时,它遇到了这样一个错误:

Mongo::ConnectionFailure at /
failed to connect to any given host:port

    * file: connection.rb
    * location: connect
    * line: 489
我发现了,但坦率地说,我不太明白答案

以下是我的代码片段:

require 'rubygems'
require 'sinatra'
require 'mongo'
require 'mongo_mapper'

get '/' do
  MongoMapper.connection = Mongo::Connection.new('flame.mongohq.com', 27044)
  MongoMapper.database = 'notes'
  MongoMapper.database.authenticate('foo', 'bar')
  erb :list
end
我从上面的代码,但它似乎不工作

哪一部分错了?还有别的办法吗?最后,这个测试web应用程序将部署到heroku上,因此我希望该解决方案能够与localhost和我的heroku服务器一起工作

更新:

I just created a minimal code snippet to test the mongodb connection:
require 'rubygems'
require 'mongo'

db = Mongo::Connection.new("flame.mongohq.com", 27044).db("notes")
但在超时后仍然出现错误:

$ ruby mongodbtest.rb 
/Library/Ruby/Gems/1.8/gems/mongo-1.0.8/lib/../lib/mongo/connection.rb:489:in
`connect': failed to connect to any given host:port (Mongo::ConnectionFailure)
from /Library/Ruby/Gems/1.8/gems/mongo-1.0.8/lib/../lib/mongo/connection.rb:137:in
`initialize'
from mongodbtest.rb:4:in `new'
from mongodbtest.rb:4
主机名和端口符合mongoHQ文档,因此它们必须是正确的

提前谢谢你的帮助

第二次更新

我刚刚使用终端测试了mongodb连接字符串:

mongo mongodb://flame.mongohq.com:27044/notes -u foo -p bar

不幸的是,这会导致连接失败错误,老实说,我不知道为什么…

只是再次尝试,这次,我使用的ip地址来自ping:

因此,如果我改变:

db = Mongo::Connection.new('flame.mongohq.com', 27060).db("notes")
db.authenticate('fake', 'info')
致:

那会有用的

我仍然不明白为什么域名方法不起作用,但至少我可以完成这件事:)

我使用

uri =  URI.parse(ENV['MONGOHQ_URL'])
@mongo_connection = Mongo::Connection.from_uri( uri )
@mongo_db = @mongo_connection.db(uri.path.gsub(/^\//, ''))
@mongo_db.authenticate(uri.user, uri.password)
您可以使用
heroku config--long
命令查找mongo url

uri =  URI.parse(ENV['MONGOHQ_URL'])
@mongo_connection = Mongo::Connection.from_uri( uri )
@mongo_db = @mongo_connection.db(uri.path.gsub(/^\//, ''))
@mongo_db.authenticate(uri.user, uri.password)