首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >heroku mongohq和mongoid Mongo::ConnectionFailure

heroku mongohq和mongoid Mongo::ConnectionFailure
EN

Stack Overflow用户
提问于 2010-05-06 20:52:18
回答 4查看 13.2K关注 0票数 15

2012年6月9日更新:

在heroku安装Mongoid3.0.0.rc,请参阅下面的gist:https://gist.github.com/2900804

2011年1月22日更新:

Uri现在在mongoid.yml中优先

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

更新2010年8月12日:虽然我得到了一个公认的答案,5月6日从杰克摇滚,有一些方面的问题,使它很容易搞砸!这再次发生在我身上,我决定研究蒙哥德的源代码。所以,就这样说:

当前,主机:端口:名称/数据库:设置优先于 uri: 设置。

这会破的!

代码语言:javascript
复制
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'] %>

通过移除主机:默认值和/或删除<<:*默认值来修复它

原文Q:

我在heroku为mongodb添加了mongodb的加载项。它崩溃的原因是:

代码语言:javascript
复制
connect_to_master': failed to connect to any given host:port (Mongo::ConnectionFailure)

在我看来,在线描述(heroku mongohq)更多的是针对mongomapper的。我使用蒙哥德运行ruby1.9.1和rails 3-beta。

我的感觉是,ENV['MONGOHQ_URL']有一些东西,上面写着MongoHQ加载项,但我还没有在我的应用程序中设置MONGOHQ_URL。我想问题出在我的mongoid.yml里?

代码语言:javascript
复制
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失败,更多的堆栈跟踪:

代码语言:javascript
复制
==> 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‘这个标签?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-06 22:18:50

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

代码语言:javascript
复制
production:
  uri: <%= ENV['MONGOHQ_URL'] %>

若要在项目中使用mongoid,请在Gemfile中设置

代码语言:javascript
复制
gem "mongoid", :git => "git@github.com:mongoid/mongoid.git"

希望一个新的宝石将很快发布,这将清理的事情。

票数 25
EN

Stack Overflow用户

发布于 2010-05-31 06:16:04

在我看来,在缺省哈希中指定主机会覆盖uri中的值。要修复它,只需从默认值中删除主机,下面是my config/mongo.yml:

代码语言:javascript
复制
defaults: &defaults
  allow_dynamic_fields: true
  parameterize_keys: true
  persist_in_safe_mode: true
  raise_not_found_error: true
  reconnect_time: 3
  use_object_ids: true

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

下面是来自mongoid的config.rb的代码片段:

代码语言:javascript
复制
  mongo_uri = settings["uri"].present? ? URI.parse(settings["uri"]) : OpenStruct.new

  name = settings["database"] || mongo_uri.path.to_s.sub("/", "")
  host = settings["host"] || mongo_uri.host || "localhost" # <= look here
  port = settings["port"] || mongo_uri.port || 27017
票数 11
EN

Stack Overflow用户

发布于 2010-05-07 02:42:18

我们的heroku区有一些蒙哥大的医生。他们还没有被正式释放,但你已经可以得到它了。不要在样式和内容方面期望太多,但它确实有一些信息,您可能会发现,对蒙哥德有用。

https://devcenter.heroku.com/articles/mongohq

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2784417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档