首页 > 解决方案 > 无法使用 rails 连接到 mLab 的 MongoDB

问题描述

我正在将 Heroku 与 mLab 一起使用。

我使用 mLab 设置我的应用程序以使用 MongoDB。

它在 Heroku 和我的本地计算机上都不起作用。

我可以使用命令行访问数据库:

mongo "mongodb://usrname:pass@ds333238.mlab.com:33238/heroku_4blzdg47"

但是当我使用带有以下设置的rails时config/mongoid.yml

production:
  sessions:
    default:
      uri: mongodb://usrname:pass@ds333238.mlab.com:33238/heroku_4blzdg47

这将是错误:

  MOPED: Could not resolve IP for: ds333238.mlab.com:33238, delta is 0.019052, error class is #<Resolv::ResolvError: Resolv::ResolvError>, retries is 0. Node is <Moped::Node resolved_address=nil> runtime: n/a
  MOPED: Could not resolve IP for: ds333238.mlab.com:33238, delta is 0.038719, error class is #<Resolv::ResolvError: Resolv::ResolvError>, retries is 1. Node is <Moped::Node resolved_address=nil> runtime: n/a
  MOPED: Could not resolve IP for: ds333238.mlab.com:33238, delta is 0.054449, error class is #<Resolv::ResolvError: Resolv::ResolvError>, retries is 2. Node is <Moped::Node resolved_address=nil> runtime: n/a
  Rendered homes/new.html.erb within layouts/application (368.6ms)
Completed 500 Internal Server Error in 385ms

ActionView::Template::Error (Could not connect to a primary node for replica set #<Moped::Cluster:70222534873720 @seeds=[<Moped::Node resolved_address=nil>]>)

如果我设置config/mongoid.yml为本地数据库,它可以工作:

production:
  sessions:
    default:
      uri: mongodb://localhost:27017/app_development

有什么问题吗?

我的部分宝石是:

ruby '2.3.7'
gem 'rails', '4.1.16'
gem "mongoid", '4.0.0'

标签: ruby-on-railsmongodbherokumongoidmlab

解决方案


在我将 Mongoid 更新到 5.2 版后它运行良好


推荐阅读