【发布时间】:2023-04-09 20:43:01
【问题描述】:
我正在用 MongoDB 配置 Rails,在解析 config/mongo.yml 文件时发现了一个奇怪的问题。
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"}}
我想知道这个问题的原因可能是什么。有任何想法吗?谢谢。
【问题讨论】:
标签: ruby-on-rails ruby yaml mongodb