0
这是我的连接代码:如何使用新的Ruby MongoDB驱动程序连接到UNIX域套接字?
@mongo = Mongo::Client.new(
config_require("mongo.uri"),
connect: :direct,
connect_timeout: 1,
server_selection_timeout: 1
)
begin
@mongo.database_names
rescue Mongo::Error::NoServerAvailable
abort "Failed to connect to database"
end
这是我的配置文件:
mongo:
uri: "mongodb://127.0.0.1:9701/kvantel_toolkit"
这个伟大的工程!
但只要将我的URI这样:
mongo:
uri: "mongodb:///home/tomas/mongodb/mongodb-9701.sock/my_project"
它挂了一秒钟,无法连接。我还没有输入了错误的路径:
$ file /home/tomas/mongodb/mongodb-9701.sock /home/tomas/mongodb/mongodb-9701.sock: socket
According to the docs我似乎做的一切正确的:
下连接到UNIX域套接字:
mongodb:///tmp/mongodb-27017.sock
它还说,并不是所有的MongoDB驱动程序都必须支持UNIX域套接字,但this list of Ruby MongoDB 2.0 driver features表明它的确如此。
任何想法,为什么这不工作?
编辑:注意到,可能是相关的一些额外的信息。当我使用IP /端口创建一个客户端,client.cluster
包含此:
#<Mongo::Cluster:0x19910340 servers=[#<Mongo::Server:0x19909540 address=127.0.0.1:9701>] topology=Single>
但使用套接字创建客户端时,client.cluster
包含此:
#<Mongo::Cluster:0x26553960 servers=[] topology=Single>
还要注意,这是在创建之后客户端,甚至在尝试连接到服务器之前。
这很难遵循。你的意思是你可以用localhost:9701/my_project替换mongodb:///tmp/mongodb-9701.sock行吗? –
不是'mongodb:///home/tomas/mongodb/mongodb-9701.sock/my_projectt'和'mongodb:///tmp/mongodb-9701.sock,localhost:9701/my_project',两个主机之间用逗号分隔,并设置sudo chmod 777 /tmp/mongodb-27017.sock文件 –