由于某些原因,我已经从Mongo_Mapper切换到Mongoid并且无法部署到生产环境。我正在使用NGINX,Rails 3.1和Passenger。我不断收到此消息,“无法连接到myusernamehere上的主节点:27017(Mongo :: ConnectionFailure)”。
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 :(得分: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派生的设置。