1

identity_map設定がファイルから取得されているようには見えませんconfig/mongoid.yml

ファイルは次のとおりです。

development:
  sessions:
    default:
      uri: mongodb://localhost:27017/test_development
      options: &defaultopts
        op_timeout: 60
        allow_dynamic_fields: false
        identity_map_enabled: true
        preload_models: true
        raise_not_found_error: false

これを実行するRAILS_ENV=development rails consoleと、マップはオンになりません:

$ RAILS_ENV=development rails c
Loading development environment (Rails 3.2.13)
[1] pry(main)> Mongoid.using_identity_map?
=> false
[2] pry(main)> Mongoid.identity_map_enabled?
=> false

手動でロードしようとしてもMongoid、ファイルは変更されません:

[3] pry(main)> require 'mongoid'
=> false
[4] pry(main)> Mongoid.load!("./config/mongoid.yml")
=> {"sessions"=>
  {"default"=>
    {"uri"=>"mongodb://localhost:27017/test_development",
     "options"=>
      {"op_timeout"=>60,
       "allow_dynamic_fields"=>false,
       "identity_map_enabled"=>true,
       "preload_models"=>true,
       "raise_not_found_error"=>false}}}}
[5] pry(main)> Mongoid.using_identity_map?
=> false
[6] pry(main)> Mongoid.identity_map_enabled?
=> false

値を手動で設定した場合にのみ有効になります。

[8] pry(main)> Mongoid.identity_map_enabled = true
=> true
[9] pry(main)> Mongoid.using_identity_map?                                                                                                                                                                                                    
=> true
[10] pry(main)> Mongoid.identity_map_enabled?
=> true

設定が正しく読み込まれないのはなぜですか?

この問題は、Rails 3.2.13 および Mongoid 3.1.2 を使用して発生しています。

4

1 に答える 1