Как правильно использовать mongodb на героку - PullRequest
1 голос
/ 07 июля 2011

У меня есть приложение, которое размещено на Heroku, а также на VPS. Я использую Mongodb в этом приложении с Mongoid. Я хочу знать, как правильно определить соединение с базой данных в mongoid.yml, чтобы один и тот же файл работал и на heroku, и на VPS. Heroku ожидает MONGOHQ_URL в производственной базе данных, в то время как моему VPS требуется отображение базы данных по умолчанию:

Correct for heroku: 
    production:
          uri: <%= ENV['MONGOHQ_URL'] %>

Correct for VPS:
     production:
        <<: *defaults
            host: localhost
            database: grbr_production

Выдвигать mongoid.yml отдельно для Heroku и VPS - настоящая боль. Есть ли способ, которым я могу создать одну единую запись, которая работает

Ответы [ 2 ]

0 голосов
/ 04 октября 2012

Экземпляр Heroku ожидает, что переменная среды MONGOHQ_URL будет определена.Имя переменной может быть любым, и если вы не используете MongoHQ, имеет смысл переименовать ее.

Чтобы ответить на ваш вопрос, у вас может быть следующий файл конфигурации для обоих:

# mongoid config file
production:
    uri: <%= ENV['MONGODB_URI'] %>

Затем на вашем VPS, предполагая среду bash:

export MONGODB_URI="mongodb://username:password@localhost:10010/db-name"

Обязательно измените все значения на подходящие.

Вы можете либо запустить это в консоли, либо еще лучшедобавьте его в файл ~ / .bashrc пользователя, запускающего экземпляр mongodb, чтобы он сохранялся при перезапуске.

Затем на heroku вы определяете его с помощью команды toolkuelt heroku:

heroku config:set MONGODB_URI="mongodb://username:password@VPS-IP-ADDRESS:10010/db-name"
0 голосов
/ 18 июля 2011

Возможно, проще всего добавить переменную среды MONGOHQ_URL в VPS, которая указывает на экземпляр mongodb на локальном хосте:

MongoDB: // локальный / grbr_production

...