为啥我的 mongoDB 托管 mongoid.yml 的 uri 设置无法正常工作?
Posted
技术标签:
【中文标题】为啥我的 mongoDB 托管 mongoid.yml 的 uri 设置无法正常工作?【英文标题】:Why is my mongoDB hosting uri settings for mongoid.yml not working correctly?为什么我的 mongoDB 托管 mongoid.yml 的 uri 设置无法正常工作? 【发布时间】:2012-06-28 06:46:58 【问题描述】:我目前在我的 mongoid.yml 中使用以下设置(不起作用),并且我已将 MONGOLAB_URI
环境变量正确添加到我的 heroku 环境中:
production:
sessions:
default:
another:
uri: <%= ENV['MONGOLAB_URI'] %>
我还尝试了以下不起作用:
production:
uri: <%= ENV['MONGOLAB_URI'] %>
这也不起作用:
production:
sessions:
default:
uri: <%= ENV['MONGOLAB_URI'] %>
我在 heroku 推送中收到以下错误:
Running: rake assets:precompile
There is a configuration error with the current mongoid.yml.
Problem:
No database provided for session configuration: :default.
Summary:
Each session configuration must provide a database so Mongoid knows where the default database to persist to. What was provided was: "another"=>"uri"=>nil.
Resolution:
If configuring via a mongoid.yml, ensure that within your :default section a :database value for the session's default database is defined.
Example:
\_\_development:
\_\_\_\_sessions:
\_\_\_\_\_\_default:
\_\_\_\_\_\_\_\_database: my_app_db
\_\_\_\_\_\_\_\_hosts:
\_\_\_\_\_\_\_\_\_\_- localhost:27017
There is a configuration error with the current mongoid.yml.
Problem:
No database provided for session configuration: :default.
Summary:
Each session configuration must provide a database so Mongoid knows where the default database to persist to. What was provided was: "another"=>"uri"=>nil.
Resolution:
If configuring via a mongoid.yml, ensure that within your :default section a :database value for the session's default database is defined.
Example:
\_\_development:
\_\_\_\_sessions:
\_\_\_\_\_\_default:
\_\_\_\_\_\_\_\_database: my_app_db
\_\_\_\_\_\_\_\_hosts:
\_\_\_\_\_\_\_\_\_\_- localhost:27017
Asset precompilation completed (15.47s)
我在这里做错了什么?我已按照 mongoid.org 的说明进行操作:
http://mongoid.org/en/mongoid/docs/installation.html
我正在使用 mongoid 3.0.0.rc
【问题讨论】:
【参考方案1】:试试这个
ENV['MONGOLAB_URI'] = ds053681.mongolab.com:97321
production:
sessions:
default:
hosts:
- <%= ENV['MONGOLAB_URI'] %>
database: testapp_production
username: testappuser
password: testpassword
【讨论】:
ENV['MONGOLAB_URI'] 的值是多少? 出于安全考虑,我更改了一些项目,但看起来是这样的:mongodb://testappuser:testpassword@ds053681.mongolab.com:97321/testapp_production
我在 mongoid 4 上使用 rails 4 并且设置对我有用,只需稍作改动。在 hosts: value 中,我直接从您在上面声明的 ENV 变量中粘贴了主机。请参阅此要点中的方式gist.github.com/cesc1989/30fc3035a404347bc48a
嗨,如果我需要将 2 个 env 组合在一起怎么办?就我而言,mongoid.yml 需要以 hostname:port 格式指定主机,我尝试了不同的组合无济于事 或放入 2分开 :
使用这个 : 冒号和端口变量之间没有空格【参考方案2】:
abhas 的例子对我不起作用。这就是最终奏效的方法:
production:
sessions:
default:
uri: <%= ENV['MONGOHQ_URI'] %>
options:
skip_version_check: true
safe: true
【讨论】:
Heroku 的帮助页面告诉我们这样做,但它不起作用。 由于环境变量名称中的意外,从此答案中复制粘贴将不起作用。它应该是MONGOHQ_URI
而不是MONGOHQ_URL
。除此之外,这就是在撰写本文时将 mongodb URI(例如 mongodb://user:password@host:port/db?params)传递给 mongoid 的工作方式。
我将MONGOHQ_URL
更改为MONGOHQ_URI
。希望这是正确的。好久没用这个了【参考方案3】:
来自https://devcenter.heroku.com/articles/mongolab#mongoid-5
production:
clients:
default:
uri: <%= ENV['MONGOLAB_URI'] %>
【讨论】:
以上是关于为啥我的 mongoDB 托管 mongoid.yml 的 uri 设置无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章
如何设置我的 VPS Webmin/Virtualmin 服务器以在托管网站中显示来自 MongoDB 的数据?
如果我使用 Heroku 来托管我的 d.py 机器人,它可以在 mongodb 中写入并保存到我的数据库吗?