【问题标题】:Mongoid Production Issue: Failed to connect to a master nodeMongoid 生产问题:连接主节点失败
【发布时间】:2011-09-20 18:34:16
【问题描述】:

由于某种原因,我已从 Mongo_Mapper 切换到 Mongoid,并且无法部署到生产环境。我正在使用 NGINX、Rails 3.1 和乘客。我不断收到此消息“无法连接到 myusernamehere:27017 (Mongo::ConnectionFailure) 处的主节点”。

  defaults: &defaults
  host: localhost
  # slaves:
  #   - host: slave1.local
  #     port: 27018
  #   - host: slave2.local
  #     port: 27019

  development:
    <<: *defaults
    database: s3uploadergen_development

  test:
    <<: *defaults
    database: s3uploadergen_test

  production:
    host: localhost
    port: 27017
    database: mydbnamehere
    username: myuserhere
    password: mypasswordhere

我已经三重检查了所有设置并尝试了 ENV 方法(将 ENV 变量添加到 production.rb 并通过记录的 mongoid 方法调用它们,但遇到了同样的问题):

production:
  host: <%= ENV['MONGOID_HOST'] %>
  port: <%= ENV['MONGOID_PORT'] %>
  username: <%= ENV['MONGOID_USERNAME'] %>
  password: <%= ENV['MONGOID_PASSWORD'] %>
  database: <%= ENV['MONGOID_DATABASE'] %>

理想情况下,我只想在 production.rb 或某种初始化程序中指定它。

【问题讨论】:

  • 我假设“记录的 mongoid 方法”是指设置推荐的“uri”参数而不是所有那些不同的设置?
  • 不,我认为这仅适用于 Heroku,我没有使用它。你能发个链接吗?或者更好的是,举个例子?

标签: ruby-on-rails ruby-on-rails-3 mongoid passenger ruby-on-rails-3.1


【解决方案1】:

我假设“记录的 mongoid 方法”是指设置推荐的“uri”参数,而不是所有那些不同的设置。您可能想尝试一下,因为这是推荐的方法。

defaults: &defaults
  persist_in_safe_mode: true

development:
  <<: *defaults
  host: localhost
  database: app_development

test:
  <<: *defaults
  host: localhost
  database: app_test

production:
  <<: *defaults
  uri: <%= ENV['MONGOHQ_URL'] %>

请注意,我确实使用 Heroku,但我不使用 MongoHQ 插件。我只是直接使用它,所以我手动设置了我的 MONGOHQ_URL。你的 uri 看起来像:

mongodb://<user>:<password>@<the.db.host.com>:<port>/<database_name>

在我看来,您无法根据错误连接到“localhost”(例如,您可能需要完整的主机名或 IP 或其他内容?)。您的应用日志中有任何内容吗?

请确保不要在任何 ENV 上设置“host”和“uri”,因为“host”将覆盖从 uri 派生的设置。

【讨论】:

  • 做到了-非常感谢!我正要拔头发! :)
猜你喜欢
  • 1970-01-01
  • 2012-07-09
  • 2013-07-11
  • 1970-01-01
  • 2020-01-12
  • 2011-04-11
  • 2016-09-14
  • 1970-01-01
  • 2020-12-01
相关资源
最近更新 更多