gpt4 book ai didi

mongodb - 为什么我收到错误 "db_name must be a string or symbol"?

转载 作者:IT老高 更新时间:2023-10-28 13:12:08 26 4
gpt4 key购买 nike

快速版本(对于那些熟悉 MongoidSinatra 的人):如果它不是 Psyche/Syck YAML 解析问题,为什么在尝试使用 Mongoid 连接到 MongoDB 数据库时可能会出现此错误? (或者也许它那个问题,在这种情况下,我该如何修复我的 mongoid.yml 文件,发布在下面?)


更详细的(原始)版本:

我有一个 Sinatra 应用程序通过 Mongoid 与 MongoDB 数据库交互:

configure do
Mongoid.load!('config/mongoid.yml')
end

我的 mongoid.yml 文件如下所示:

development:
host: localhost
database: project_development

test:
host: localhost
database: project_test

production:
uri: <%= ENV['MONGOLAB_URI'] %>

每当我尝试以某种方式与数据库交互时,都会收到错误db_name must be a string or symbol

现在,我在 Google 上找到了大量关于此的信息;但我能找到的一切似乎都表明问题与现在使用 Psyche YAML 解析器而不是旧的 Syck 解析器的 Ruby 有关。我认为这实际上与我的情况无关,因为据我所知,上述 YAML 应该可以完美解析。

(尽管如此,我已经尝试使用 YAML::ENGINE.yamler= 'syck' 技巧,但无济于事。我得到了确切的同样的错误信息。)

当我将配置更改为:

Mongoid.configure do |config|
name = "project_development"
host = "localhost"
config.master = Mongo::Connection.new.db(name)
end

...然后一切正常。所以我知道 MongoDB 正在我的机器上运行。尤其是当我使用 YAML 文件时,事情会出错。

那是什么?

最佳答案

确保 ENV['RACK_ENV'] 设置正确,因为如果 Mongoid.load! 没有找到 Rails,就会使用它。环境.

关于mongodb - 为什么我收到错误 "db_name must be a string or symbol"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7052338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com