gpt4 book ai didi

方法调用中的 Ruby 变量替换

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:45 24 4
gpt4 key购买 nike

这里是 Ruby 菜鸟。对我遇到的小问题的任何帮助将不胜感激。我正在尝试将数组放入格式化为数组的连接字符串参数中。

我的数组如下:

hosts = ["192.168.0.2:27017","192.168.0.3:27017"]

我需要将数组分开并像数组一样构造它,以便我可以立即将所有连接替换为调用。主机的数量可能会有所不同,因此为什么它在一个数组中。

hosts_mapped = hosts.map { |i| "'" + i.to_s + "'" }.join(",")

给我 "192.168.0.2:27017","192.168.0.3:27017"作为我认为的字符串......试图启动连接。

@conn = Mongo::ReplSetConnection.new([hosts_mapped], :refresh_mode => :sync, :refresh_interval => 10)

Exception `Mongo::ConnectionFailure' at gems/mongo-1.7.0/lib/mongo/util/pool_manager.rb:282 - Cannot connect to a replica set using seeds '192.168.0.2:27017
Mongo::ConnectionFailure: Cannot connect to a replica set using seeds '192.168.0.2:27017

如您所见,它似乎只引用了第一个条目。我需要将这个数组保存在一个配置文件中,所以这就是它不直接进入上面的连接字符串的原因。对我来说,我似乎已将 hosts_mapped 映射回数组,但如果我将 hosts_mapped 放入正确格式的字符串。

"192.168.0.2:27017","192.168.0.3:27017"

有效的连接字符串如下所示:

@conn = Mongo::ReplSetConnection.new(["192.168.0.2:27017","192.168.0.3:27017"], :refresh_mode => :sync, :refresh_interval => 10)

有谁知道我哪里出错了?

要测试的完整代码:

#!/usr/bin/ruby -d 
require "mongo"
hosts = ["192.168.0.2:27017","192.168.0.3:27017"]
hosts_mapped = hosts.map {|i| "'" + i.to_s + "'" }.join(",") @conn =
Mongo::ReplSetConnection.new([hosts_mapped], :refresh_mode => :sync,:refresh_interval => 10)

最佳答案

根据文档 Mongo::ReplSetConnection.new可以采用数组:

Mongo::ReplSetConnection.new(['localhost:30000', 'localhost:30001'])

因为你已经有了一个数组,你可以把它作为第一个参数传递:

hosts = ["192.168.0.2:27017","192.168.0.3:27017"]
Mongo::ReplSetConnection.new(hosts)

关于方法调用中的 Ruby 变量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13085236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com