gpt4 book ai didi

ruby-on-rails - heroku mongohq 和 mongoid Mongo::ConnectionFailure

转载 作者:IT老高 更新时间:2023-10-28 13:08:05 25 4
gpt4 key购买 nike

2012 年 6 月 9 日更新:

在 heroku 使用 mongoid 3.0.0.rc 进行设置,请参阅以下要点:https://gist.github.com/2900804

2011 年 1 月 22 日更新:

Uri 现在优先于 mongoid.yml

https://github.com/mongoid/mongoid/issues/issue/266

2010 年 8 月 12 日更新:虽然我在 5 月 6 日从 Jackues Crocker 那里得到了一个接受的答案,但这个问题的某些方面很容易搞砸!它再次发生在我身上,我决定研究 mongoid 源代码。所以,就这样吧:

目前,host: port: name/database: settings TAKE PRECEDENCE OVER the uri: setting。 因此,非常无信息的错误消息由于对 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 的插件在heroku。它崩溃了:

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'] %>

它在本地运行良好,但在 heroku 失败,更多堆栈跟踪:

==> 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'?

最佳答案

Mongoid (master) 现在在 mongoid.yml 中有一个 URI 选项。所以你可以这样做:

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

要在您的项目中使用 mongoid master,请在您的 Gemfile 中进行设置

gem "mongoid", :git => "git@github.com:mongoid/mongoid.git"

希望很快会发布一个新的 gem 来清理一切。

关于ruby-on-rails - heroku mongohq 和 mongoid Mongo::ConnectionFailure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com