MongoMapper は MongoMapper.setup
メソッドで MongoDB への接続情報や logger オプションなどを渡して初期化を行うが、普段は YAML に設定を書いていたり、 MongoDB の接続情報は環境変数で設定していたりして、手元でちょっとした検証用のコードを書くときにどういうデータを渡せばいいんだっけ、と悩むことが多いのでまとめた。
https://github.com/kyanny/mongoclient-mongomapper-logging/blob/master/config.rb
MongoMapper.setup(config, env, options)
と三つの引数を受け取る。
注意点は以下。
env
は文字列でないとうまくいかない (Symbol ではダメ)config
のキーはenv
と一致するものがないといけないので全て String である必要がある
第一引数は database.yml
みたいな、アプリケーション実行環境名を key とした Hash で、 host, port そして database などを指定する。
config = { 'development' => { 'host' => '127.0.0.1', 'port' => 27017, 'database' => 'myapp_development', }, 'production' => { 'host' => '127.0.0.1', 'port' => 27017, 'database' => 'myapp_production', }, }
第二引数は第一引数 config で定義した設定のうち、どれを利用するかを指定する。
env = 'development'
第三引数はオプションで、 logger などはここで渡す。
options = { logger: Logger.new(STDOUT), }
まとめるとこうなる。
MongoMapper.setup( { 'development' => { 'host' => '127.0.0.1', 'port' => 27017, 'database' => 'myapp_development', }, 'production' => { 'host' => '127.0.0.1', 'port' => 27017, 'database' => 'myapp_production', }, }, # config 'development', # env logger: Logger.new(STDOUT) # options )
MongoMapper の GitHub リポジトリにあるサンプルコードでは MongoMapper.database = 'testing'
みたいなのがたくさんあり、手軽に試すにはこのショートハンドを使うのが便利だが、この方法だと logger を設定することができないため、 setup を使った方法もさらっと書けるようになっておくに越したことはない。