HerokuでMongoHQアドオンを使用し、Mongoid3.0アダプターを使用しています。アドオンプランにはサイズ制限があり、DB制限に達すると、Mongoはサイレントに書き込みに失敗します(セーフモードに設定されている場合を除きます。この場合、例外がスローされます)。
アプリ内からどれだけ近いかを照会し、制限に達した場合にアラートを送信しようとしています。db.stats()
コマンドのようなものをMongoidを使用して実行するにはどうすればよいですか?
HerokuでMongoHQアドオンを使用し、Mongoid3.0アダプターを使用しています。アドオンプランにはサイズ制限があり、DB制限に達すると、Mongoはサイレントに書き込みに失敗します(セーフモードに設定されている場合を除きます。この場合、例外がスローされます)。
アプリ内からどれだけ近いかを照会し、制限に達した場合にアラートを送信しようとしています。db.stats()
コマンドのようなものをMongoidを使用して実行するにはどうすればよいですか?
10genのRubyドライバーではなく、Mopedをドライバーとして使用するMongoid3.xでこれを行う方法を見つけました。
この問題で提起されたgithubの問題に答えたのは、Moped自身の作者でした。
Mongoid.default_session.command(collstats: 'collection_name')
db.stats()
これにより、Mongoコンソールからの結果と同じ結果が返されます。追加のボーナスとして、コレクションに上限がある場合、戻り値にそのことを示すフラグが表示されます。
オブジェクト(ドキュメントなど)で「.db」メソッドを呼び出して、.statsを実行できます。
例えば:
MyBlog.db.stats
Mongoid 3.0.0より前のバージョンでは、Mongoid.master.stats
も機能するはずです。