1

我已经从Mongo_Mapper切换到Mongoid,并且出于某种原因无法部署到生产环境。我正在使用NGINX,Rails 3.1和Passenger。我不断收到此消息,“无法连接到myusernamehere:27017(Mongo :: ConnectionFailure)上的主节点”。Mongoid生产问题:无法连接到主节点

defaults: &defaults 
    host: localhost 
    # slaves: 
    # - host: slave1.local 
    #  port: 27018 
    # - host: slave2.local 
    #  port: 27019 

    development: 
    <<: *defaults 
    database: s3uploadergen_development 

    test: 
    <<: *defaults 
    database: s3uploadergen_test 

    production: 
    host: localhost 
    port: 27017 
    database: mydbnamehere 
    username: myuserhere 
    password: mypasswordhere 

我有三重检查所有的设置,并试图ENV方法,以及(添加ENV变量production.rb并通过记录mongoid方法调用他们,但有同样的问题):

production: 
    host: <%= ENV['MONGOID_HOST'] %> 
    port: <%= ENV['MONGOID_PORT'] %> 
    username: <%= ENV['MONGOID_USERNAME'] %> 
    password: <%= ENV['MONGOID_PASSWORD'] %> 
    database: <%= ENV['MONGOID_DATABASE'] %> 

理想情况下,我想只是在production.rb或某种初始化器中指定它。

+0

我假设通过“记录的mongoid方法”你的意思是设置推荐的“uri”参数,而不是所有这些不同的设置? – typeoneerror

+0

不,我认为这只适用于Heroku,我不使用。你能发布一个链接吗?或者更好的例子是? – jschorr

回答

1

我假设通过“记录的mongoid方法”你的意思是设置推荐的“uri”参数,而不是所有这些不同的设置。您可能想尝试一下,因为这是推荐的方式。

defaults: &defaults 
    persist_in_safe_mode: true 

development: 
    <<: *defaults 
    host: localhost 
    database: app_development 

test: 
    <<: *defaults 
    host: localhost 
    database: app_test 

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

请注意,我用的Heroku,但我不使用MongoHQ添加上。我只是直接使用它,所以我手动设置我的MONGOHQ_URL。你的URI看起来是这样的:

mongodb://<user>:<password>@<the.db.host.com>:<port>/<database_name> 

在我看来就像基于错误“localhost”的您无法连接(如也许你需要完整的主机名或IP还是什么?)。你的应用程序日志中有什么?

只要确保不要在任何ENV上设置“host”和“uri”,因为“host”会覆盖从uri派生的设置。

+1

这样做 - 非常感谢你!我正要把我的头发拉出来! :) – jschorr

相关问题