UPDATE 9 Giugno 2012:Heroku mongohq e mongoid Mongo :: ConnectionFailure
installazione con 3.0.0.rc mongoid a Heroku, vedere questo succo: https://gist.github.com/2900804
AGGIORNAMENTO 22 gennaio 2011:
Uri ora ha la precedenza in mongoid.yml
https://github.com/mongoid/mongoid/issues/issue/266
AGGIORNAMENTO 12 Agosto 2010: Anche se ho ricevuto una risposta accettata 6 maggio da Jacks Crocker, ci sono aspetti di questo problema che rende facile fare casino! È successo a me ancora una volta e ho deciso di cercare il codice sorgente mongoid. Quindi, qui va:
Attualmente, host: port: nome/database: impostazioni hanno la precedenza sulle uri: impostazione. Quindi, il messaggio di errore terribilmente uninformative sta accadendo a causa di una richiesta di localhost: xxxx e non flame.local.mongohq.com:xxxx
questo si romperà!
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'] %>
fissarlo con rimuovendo l'host : in default, e/o rimozione del < <: * default
Q ORIGINALE:
ho aggiunto il mongoHQ addon per mongodb su heroku. Si blocca con:
connect_to_master': failed to connect to any given host:port (Mongo::ConnectionFailure)
Le descrizioni online (heroku mongohq) sono più diretti verso MongoMapper, come la vedo io. Sto eseguendo Ruby 1.9.1 e rotaie 3-beta con mongoid.
La mia sensazione dice che c'è qualcosa con ENV['MONGOHQ_URL']
, che dice il set di componenti MongoHQ, ma non ho impostato MONGOHQ_URL
ovunque nella mia app. Immagino che il problema sia nel mio 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'] %>
Funziona bene a livello locale, ma non riesce a Heroku, più dello stack trace:
==> 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'
.....
Funziona tutto a livello locale, entrambi i test e le app. Sono fuori idee ... Qualche suggerimento?
PS: qualcuno con una buona reputazione crea il tag "mongohq"?
La correzione uri non lo fa sembra funzionare ancora. Ho trovato il ticket/problema su github.com/durran/mongoid e la sua fonte http://ragingonrails.com/post/566548996/using-mongoid-on-heroku-with-mongohq. L'ho fatto allo stesso modo, manipolando l'ENV per port, host e così via. Ha funzionato! – oma
Questa risposta è contrassegnata come corretta. Per gli altri che stanno vivendo lo stesso, nota che ho dovuto tweek un po 'di me stesso. Dovrebbe anche essere ': git => git: // github.com/durran/mongoid.git' – oma
Ora è necessario usare' produzione> sessioni> default> uri' - aggiorna la risposta per corrispondere. – chrismdp