这只是我的周末项目/学习,我是非常新的西纳屈和MongoDB。
我已经为mongoDB安装了宝石,例如: 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上,因此我希望该解决方案能够与本地主机和我的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不幸的是这会让我的连接失败,老实说,我不知道为什么.
发布于 2010-12-14 04:13:48
我使用
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
发布于 2010-09-14 10:16:19
刚才又试了一次,这一次,我用的是来自ping的ip地址:
所以,如果我改变了
db = Mongo::Connection.new('flame.mongohq.com', 27060).db("notes")
db.authenticate('fake', 'info')至:
db = Mongo::Connection.new('184.73.224.5', 27060).db("notes")
db.authenticate('fake', 'info')那会管用的..。
我仍然不明白为什么域名方法不能工作,但至少我可以完成:)
https://stackoverflow.com/questions/3693490
复制相似问题