Mongodb 如何检查Mongoid的连接
Mongoid是否有类似于Mongodb 如何检查Mongoid的连接,mongodb,connection,mongoid,database,Mongodb,Connection,Mongoid,Database,Mongoid是否有类似于ActiveRecord::Base.connected的方法?? 我想检查连接是否可访问。我的解决方案: def check_mongoid_connection mongoid_config = File.read("#{Rails.root}/config/mongoid.yml") config = YAML.load(mongoid_config)[Rails.env].symbolize_keys ho
ActiveRecord::Base.connected的方法?
?
我想检查连接是否可访问。我的解决方案:
def check_mongoid_connection
mongoid_config = File.read("#{Rails.root}/config/mongoid.yml")
config = YAML.load(mongoid_config)[Rails.env].symbolize_keys
host, db_name, user_name, password = config[:host], config[:database], config[:username], config[:password]
port = config[:port] || Mongo::Connection::DEFAULT_PORT
db_connection = Mongo::Connection.new(host, port).db(db_name)
db_connection.authenticate(user_name, password) unless (user_name.nil? || password.nil?)
db_connection.collection_names
return { status: :ok }
rescue Exception => e
return { status: :error, data: { message: e.to_s } }
end
我们希望为正在运行的Mongoid客户端实现一个运行状况检查,该检查告诉我们所建立的连接是否仍然有效。这就是我们得出的结论:
Mongoid.default_client.database_names.present?
基本上,它接受您当前的客户机,并尝试在其连接的服务器上查询数据库。如果此服务器关闭,您将遇到超时,您可以捕获它。snrlx的答案很好 我在puma配置文件中使用了以下内容,仅供参考:
before_fork do
begin
# load configuration
Mongoid.load!(File.expand_path('../../mongoid.yml', __dir__), :development)
fail('Default client db check failed, is db connective?') unless Mongoid.default_client.database_names.present?
rescue => exception
# raise runtime error
fail("connect to database failed: #{exception.message}")
end
end
需要提醒的一点是默认的服务器选择\u超时
对于数据库状态检查来说太长了,至少在开发过程中,您可以在mongoid.yml中修改它