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: 设置。
这会破的!
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的加载项。它崩溃的原因是:
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里?
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‘这个标签?
发布于 2010-05-06 22:18:50
Mongoid (主)现在在mongoid.yml中有一个URI选项。所以你可以:
production:
uri: <%= ENV['MONGOHQ_URL'] %>若要在项目中使用mongoid,请在Gemfile中设置
gem "mongoid", :git => "git@github.com:mongoid/mongoid.git"希望一个新的宝石将很快发布,这将清理的事情。
发布于 2010-05-31 06:16:04
在我看来,在缺省哈希中指定主机会覆盖uri中的值。要修复它,只需从默认值中删除主机,下面是my config/mongo.yml:
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的代码片段:
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发布于 2010-05-07 02:42:18
我们的heroku区有一些蒙哥大的医生。他们还没有被正式释放,但你已经可以得到它了。不要在样式和内容方面期望太多,但它确实有一些信息,您可能会发现,对蒙哥德有用。
https://stackoverflow.com/questions/2784417
复制相似问题