Вы на правильном пути. server_selection_timeout
является правильным вариантом в этом случае - он сообщает водителю, как долго ждать, чтобы найти подходящий сервер, прежде чем истечет время ожидания. Вы можете установить эту опцию для нового клиента в файле конфигурации Mongoid (config/mongoid.yml
).
Вы хотите, чтобы ваш файл конфигурации выглядел примерно так:
development: # (or production or whatever environment you're using)
clients:
default:
# your default client here
new_client: # the name of your new client with different options
database: mongoid
hosts:
- localhost:27017
options:
server_selection_timeout: 6
...
Чтение Документация по конфигурации Mongoid , чтобы узнать больше о настройке файлов конфигурации.
Затем вы захотите использовать новый клиент, который вы определили для выполнения вашего запроса, и спасти любые ошибки Mongo::Error::NoServerAvailable
.
begin
User.with(client: 'new_client').collection.find({}).count()
rescue Mongo::Error::NoServerAvailable => e
# perform error handling here
end
Обратите внимание, что при этом запускается новый экземпляр Mongo::Client
, который является дорогостоящей операцией, если выполняется многократно. Я бы порекомендовал вам закрыть дополнительный клиент, как только вы закончите использовать его, например, так:
Mongoid::Clients.with_name('new_client').close