ОБНОВЛЕНИЕ 9 июня 2012 г.:
Настройка с mongoid 3.0.0.rc на героку, см. суть: https://gist.github.com/2900804
ОБНОВЛЕНИЕ от 22 января 2011 г.:
Uri теперь имеет приоритет в mongoid.yml
https://github.com/mongoid/mongoid/issues/issue/266
ОБНОВЛЕНИЕ 12 августа 2010 г .: Хотя 6 мая я получил принятый ответ от Джекуса Крокера, есть аспекты этой проблемы, из-за которых легко все испортить! Это случилось со мной еще раз, и я решил исследовать исходный код mongoid. Итак, вот оно:
В настоящее время параметры host: port: name/database: ИМЕЮТ ПРИОРИТЕТ НАД параметром uri:. Следовательно, ужасно неинформативное сообщение об ошибке возникает из-за на запрос к localhost:xxxx, а не к flame.local.mongohq.com:xxxx
Это сломается!
defaults: &defaults
host: localhost <- THIS 'OVERWRITES' host in the uri!
production:
<<: *defaults <- BE CAREFUL WITH WHAT YOU BRING IN. THE host: FROM DEFAULTS WILL BE THE ONE APPLIED, not your uri host.
uri: <%= ENV['MONGOHQ_URL'] %>
исправить это, удалив host: в настройках по умолчанию и/или удалив ‹‹: *defaults
ОРИГИНАЛЬНЫЙ ВОПРОС:
Я добавил дополнение mongoHQ для mongodb в героку. Он падает с:
connect_to_master': failed to connect to any given host:port (Mongo::ConnectionFailure)
Описания в Интернете (heroku mongohq) больше ориентированы на mongomapper, насколько я понимаю. Я запускаю ruby 1.9.1 и rails 3-beta с mongoid.
Я чувствую, что есть что-то с ENV['MONGOHQ_URL']
, которое, как говорится, устанавливает аддон MongoHQ, но я нигде не устанавливал MONGOHQ_URL
в своем приложении. Я предполагаю, что проблема в моем mongoid.yml?
defaults: &defaults
host: localhost
development:
<<: *defaults
database: aliado_development
test:
<<: *defaults
database: aliado_test
# set these environment variables on your prod server
production:
<<: *defaults
host: <%= ENV['MONGOID_HOST'] %>
port: <%= ENV['MONGOID_PORT'] %>
username: <%= ENV['MONGOID_USERNAME'] %>
password: <%= ENV['MONGOID_PASSWORD'] %>
database: <%= ENV['MONGOID_DATABASE'] %>
Он отлично работает локально, но не работает на героку, больше трассировки стека:
==> crashlog.log <==
Cannot write to outdated .bundle/environment.rb to update it
/disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/rack-1.1.0/lib/rack.rb:14: warning: already initialized constant VERSION
/disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongo-0.20.1/lib/mongo/connection.rb:435:in `connect_to_master': failed to connect to any given host:port (Mongo::ConnectionFailure)
from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongo-0.20.1/lib/mongo/connection.rb:112:in `initialize'
from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongoid-2.0.0.beta4
/lib/mongoid/railtie.rb:32:in `new'
from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongoid-2.0.0.beta4/lib/mongoid/railtie.rb:32:in `block (2 levels) in <class:Railtie>'
from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongoid-2.0.0.beta4/lib/mongoid.rb:110:in `configure'
from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/mongoid-2.0.0.beta4/lib/mongoid/railtie.rb:21:in `block in <class:Railtie>'
from /disk1/home/slugs/176479_b14df52_b875/mnt/.bundle/gems/gems/railties-3.0.0.beta3/lib/rails/initializable.rb:25:in `instance_exec'
.....
Все работает локально, и тесты, и приложение. У меня нет идей... Любые предложения?
PS: Кто-то с высоким уровнем репутации создал тег «mongohq»?