Mongoid Production Проблема: не удалось подключиться к главному узлу - PullRequest
1 голос
/ 20 сентября 2011

Я перешел с 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 Ответ

1 голос
/ 20 сентября 2011

Я предполагаю, что под "документированным подходом 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 или что-то в этом роде?). Что-нибудь в журналах вашего приложения?

Только убедитесь, что не установили "host" и "uri" ни на одном из ENV, потому что "host" переопределит настройку, полученную из uri.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...