Mongoid:未初始化的常量(NameError)

Posted

技术标签:

【中文标题】Mongoid:未初始化的常量(NameError)【英文标题】:Mongoid: uninitialized constant (NameError) 【发布时间】:2021-11-03 02:45:56 【问题描述】:

我目前正在尝试编写一段非常基本的代码,用于读取 ruby​​ 文件并将一些文档实例化到我的本地 MongoDB 中。

为我的 Mongo 文档建模的类位于一个名为“search_term.rb”的单独文件中,如下所示:

class SearchTerm
  include Mongoid::Document
  field :search_term, type: String
end

在与“search_term.rb”位于同一文件夹中的名为“populate_database.rb”的单独文件中,我正在尝试从列表中读取并创建新文档并查看我的 MongoDB Compass,如果它们实际上是创建:

require_relative 'search_term'

business_list = [
  'business name 1',
  'business name 2',
  'business name 3',
  'business name 4',
]

for business in business_list
  s_term = SearchTerm.new()
  s_term.search_term = business
  s_term.post
end

问题是:当我运行“ruby populate_database.rb”时出现错误:

<class:SearchTerm>': uninitialized constant SearchTerm::Mongoid (NameError)

我已经尝试过创建一个空的 Gemfile 并写入:

gem 'mongo'
gem 'mongoid'

进入它们并运行“捆绑安装”。之后会创建以下 Gemfile.lock 文件:

GEM
  specs:
    activemodel (6.1.4.1)
      activesupport (= 6.1.4.1)
    activesupport (6.1.4.1)
      concurrent-ruby (~> 1.0, >= 1.0.2)
      i18n (>= 1.6, < 2)
      minitest (>= 5.1)
      tzinfo (~> 2.0)
      zeitwerk (~> 2.3)
    bson (4.12.1)
    concurrent-ruby (1.1.9)
    i18n (1.8.10)
      concurrent-ruby (~> 1.0)
    minitest (5.14.4)
    mongo (2.13.0)
      bson (>= 4.8.2, < 5.0.0)
    mongoid (7.3.2)
      activemodel (>= 5.1, < 6.2)
      mongo (>= 2.10.5, < 3.0.0)
      ruby2_keywords (~> 0.0.5)
    ruby2_keywords (0.0.5)
    tzinfo (2.0.4)
      concurrent-ruby (~> 1.0)
    zeitwerk (2.4.2)

PLATFORMS
  x64-mingw32

DEPENDENCIES
  mongo
  mongoid

BUNDLED WITH
   2.2.27

但问题仍然存在。各位大神可以给我一些解决方法的建议吗?

提前致谢!!

【问题讨论】:

【参考方案1】:

如果你没有使用 Rails,你需要在你的应用程序的某个地方require "mongoid"自己,然后加载 Mongoid 配置。有关如何执行此操作的示例,请参阅 here。

【讨论】:

以上是关于Mongoid:未初始化的常量(NameError)的主要内容,如果未能解决你的问题,请参考以下文章

未初始化的常量 Logger (NameError)

Rails:NameError:未初始化的常量

未初始化的常量 Twitter (NameError)

NameError - 未初始化的常量 Sass::Engine:

NameError 未初始化常量 Model::Object

未初始化的常量 OpenSSL (NameError)