Сбой приложения с Heroku, Mongoid и MongoHQ - PullRequest
0 голосов
/ 13 марта 2011

Я пытаюсь подключить свое приложение к сети и работать с Heroku.

Приложение использует MongoHQ и Mongoid.

Я прочитал несколько руководств, в которых просто сказано добавить это: "uri:<% = ENV ['MONGOHQ_URL']%> "в файл mongoid.yml, но он не работает для меня.

Это ошибка, которую я получаю от Heroku,

" Ошибка приложения

В приложении произошла ошибка, и ваша страница не может быть обработана. Повторите попытку через несколько секунд.

Если вы являетесь владельцем приложения, проверьте подробности в своих журналах. "

Это то, что есть в моих журналах $ heroku

2011-03-12T21: 09: 57-08: 00 heroku [router]: ошибка H10 (приложение упало) -> ПОЛУЧИТЬ autommator.heroku.com / dyno = нет очереди = 0 ждать = 0 мс службы = 0 мс байт = 0 2011-03-12T21: 09: 57-08: 00heroku [nginx]: GET / HTTP / 1.1 |76.112.220.158 |795 |http |503

Вот мой файл mongoid.yml.

require 'yaml'
YAML::ENGINE.yamler= 'syck'

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

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

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

# set these environment variables on your prod server
production:
  uri: <%= ENV['MONGOHQ_URL'] %>
  host: <%= ENV['MONGOID_HOST'] %>
  port: <%= ENV['MONGOID_PORT'] %>
  username: <%= ENV['MONGOID_USERNAME'] %>
  password: <%= ENV['MONGOID_PASSWORD'] %>
  database: <%= ENV['MONGOID_DATABASE'] %>

Полностью нет идей.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 14 марта 2011

Чтобы использовать mongoid с надстройкой Heroku, ваш mongoid.yml должен выглядеть следующим образом:

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

У вас не должно быть никакой другой информации о подключении к базе данных, поэтому вытащите хост, порт, имя пользователя, пароль и поля базы данных.

1 голос
/ 05 ноября 2011

Вы создали базу данных с помощью дополнения Heroku или непосредственно из MongoHQ? Если вы сделали это напрямую из MongoHQ, вам нужно будет установить переменные вручную.

heroku config:add MONGOHQ_URL=mongodb://user:pass@server.mongohq.com:port/db_name

Если это было через аддон heroku, то он должен быть создан для вас. Если добавление переменной не помогает, отправьте нам запрос в службу поддержки support@mongohq.com, и мы сможем продолжить.

1 голос
/ 14 марта 2011

Я понял проблему сегодня утром. Мое приложение на компьютере для разработки работает под управлением Ruby 1.9.2. Heroku по умолчанию 1.8.7.

Я только что выполнил команды, найденные в этой статье, http://devcenter.heroku.com/articles/bamboo перезагрузил, и все работает.

Спасибо за помощь, ребята.

0 голосов
/ 14 марта 2011

Может быть, я утверждаю здесь очевидное, но то, что он делает, это извлекает ценности из окружающей среды.Для того, чтобы это работало, вам нужно установить переменные (MONGOHQ_URL и т. Д.) В среде heroku.Я думаю, что команда для этого - что-то вроде heroku config:add MONGOHQ_URL=XXXXX или что-то в этом роде.Обязательно посмотрите это в документах heroku.

Учитывая, что вы извлекаете ценности из окружающей среды, YML кажется неправильным путем.Я предлагаю и инициализирую файл, который просто устанавливает эти значения или помещает их в какой-то тип MONGO_CONFIG, где вы можете прочитать их где угодно.Если вы пойдете по этому пути, вы также можете установить их в переменные env, если они заданы, или вернуться к файлу YML, если нет.

Этот Railscast показывает то, о чем я говорю http://railscasts.com/episodes/85-yaml-configuration-file Разница в том, что когда приходит время установить переменную, вы устанавливаете ее на ENV['XXX'] if ENV['XXX']

...