【问题标题】:NoMethodError undefined method 'convert_key' when using Mongoid in Ruby 2.2在 Ruby 2.2 中使用 Mongoid 时的 NoMethodError 未定义方法“convert_key”
【发布时间】:2015-10-06 09:29:51
【问题描述】:

我从 Ruby 2.0 升级到 2.2 后,一个运行良好的项目开始抛出此错误。当我尝试访问 mongo 数据库时会发生这种情况,即使是简单的Table.all.to_a

NoMethodError (undefined method `convert_key' for {"database"=>"db_name"}:Mongo::Options::Redacted):

这里的 db_name 是数据库的实际名称,它确实存在于 mongoid.yml 中配置的端口上。我正在使用 mongoid (5.0.0)。

如何解决此错误?

更新 我打印了一个更有用的错误,它可以追溯到文件:

.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/options/redacted.rb:64:

到代码:

  def has_key?(key)
    super(convert_key(key))
  end
  alias_method :key?, :has_key?

键值为connect。

我仍然不确定为什么会发生这种情况。

【问题讨论】:

  • mongoid 的版本?我猜你的 yml 文件有问题。
  • mongoid (5.0.0),我删除了我的 yml 文件,使用:rails g mongoid:config 重新创建它,然后只是更改了该文件中的数据库名称

标签: ruby-on-rails ruby mongodb mongoid


【解决方案1】:

我将项目 gem 文件中的 mongo 版本设置为 2.1.0,之前它会自动下载 2.1.1。然后我执行了bundler update。这解决了问题。然后,我将 gem 文件中的版本显式切换回 2.1.1 并再次运行bundler update。问题还是解决了!所以我猜想当我将项目从 2.0.0 移到 rbenv Ruby 2.2.0 时,mongo gem 已经损坏了

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 2023-03-06
    • 1970-01-01
    • 2016-06-15
    • 2013-02-17
    • 2014-03-16
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多