我正在配置Rails和MongoDB,並在配對config/mongo.yml
文件時發現一個奇怪的問題。在Rails中加載YAML配置文件時出錯
config/mongo.yml
通過執行script/rails generate mongo_mapper:config
產生的,它看起來像如下:
defaults: &defaults
host: 127.0.0.1
port: 27017
development:
<<: *defaults
database: tc_web_development
test:
<<: *defaults
database: tc_web_test
從配置文件中,我們可以看到的物體development
和test
都應該有一個database
場。但是,當它被解析並在config/initializers/mongo.db
加載,
config = YAML::load(File.read(Rails.root.join('config/mongo.yml')))
puts config.inspect
MongoMapper.setup(config, Rails.env)
奇怪的事情來了:的puts config.inspect
輸出
{"defaults"=>{"host"=>"127.0.0.1", "port"=>27017}, "development"=>{"host"=>"127.0.0.1", "port"=>27017}, "test"=>{"host"=>"127.0.0.1", "port"=>27017}}
不含database
屬性。但是,當我在普通的ruby控制檯執行相同的語句,而不是使用rails console
,mongo.yml
是以正確的方式解析。
{"defaults"=>{"host"=>"127.0.0.1", "port"=>27017}, "development"=>{"host"=>"127.0.0.1", "port"=>27017, "database"=>"tc_web_development"}, "test"=>{"host"=>"127.0.0.1", "port"=>27017, "database"=>"tc_web_test"}}
我想知道什麼可能是這個問題的原因。有任何想法嗎?謝謝。