レール付きのMongoidを使用して、Mongoid.override_database( "database_name")を使用して複数のデータベースと通信しています。プログラムで現在のデータベースを見つけるにはどうすればよいですか?
セッションに関するMongoidドキュメント:http://mongoid.org/en/moped/docs/driver.htmlデータベースをオーバーライドするメソッドを定義しますが、現在のデータベースを使用する方法は定義しません。
レール付きのMongoidを使用して、Mongoid.override_database( "database_name")を使用して複数のデータベースと通信しています。プログラムで現在のデータベースを見つけるにはどうすればよいですか?
セッションに関するMongoidドキュメント:http://mongoid.org/en/moped/docs/driver.htmlデータベースをオーバーライドするメソッドを定義しますが、現在のデータベースを使用する方法は定義しません。
とった!
Mongoid.default_session.options[:database]
これを取得する新しい方法は
Mongoid::Config.clients["default"]["database"]
ご覧になることもできます
Mongoid::Config.clients
他に何が利用できるかを確認します。
オーバーライドされたデータベースが必要な場合は、実際に使用する必要があります
Mongoid::Threaded.database_override
Mongoid.default_session.options [:database]を実行すると、default_sessionが無効であるというエラーが発生します。これでdefault_clientになります。それは素晴らしく機能します。
[:database]なしで実行すると、すべてのオプションが取得され、データベースの完全な構成が表示されます。
Mongoid :: Config.clients ["default"] ["database"]は、uriバージョンのmongoid.ymlを使用していないことを前提としています。すべての場合でnilになります。Mongoid :: Config.clients ["default"]を使用して現在のデータベースの完全な構成を取得するか、Mongoid :: Config.clients["default"]['uri']を使用して完全なURIのみを取得します。
最後のポート番号/の後のURIからデータベース名を選択します。シャード構成を使用している場合は、いくつか存在する可能性があります
Mongoidバージョン7.0.5
Mongoid.client(:default).database