在 Ruby 2.2 中使用 Mongoid 时出现 NoMethodError 未定义方法 'convert_key'
NoMethodError undefined method 'convert_key' when using Mongoid in Ruby 2.2
一个运行良好的项目在我从 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?
键值为连接。
我仍然不确定为什么会这样。
我在项目gem文件中将mongo的版本设置为2.1.0,之前它自动下载了2.1.1。然后我执行了bundler update
。这解决了问题。然后我将 gem 文件中的版本显式切换回 2.1.1 并再次 运行 bundler update
。问题还是解决了!所以我想不知何故 mongo gem 在我将项目从 2.0.0
移动到 rbenv Ruby 2.2.0 时被破坏了
一个运行良好的项目在我从 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?
键值为连接。
我仍然不确定为什么会这样。
我在项目gem文件中将mongo的版本设置为2.1.0,之前它自动下载了2.1.1。然后我执行了bundler update
。这解决了问题。然后我将 gem 文件中的版本显式切换回 2.1.1 并再次 运行 bundler update
。问题还是解决了!所以我想不知何故 mongo gem 在我将项目从 2.0.0