Mongoid生产问题:无法连接到主节点

时间:2011-09-20 18:34:16

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

由于某些原因,我已经从Mongo_Mapper切换到Mongoid并且无法部署到生产环境。我正在使用NGINX,Rails 3.1和Passenger。我不断收到此消息,“无法连接到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或某种初始值设定项中指定它。

1 个答案:

答案 0 :(得分: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派生的设置。