我正在尝试将我的应用程序联机并使用Heroku运行。
该应用程序使用MongoHQ和Mongoid。
我已经阅读了多个指南,只是说要添加它,“uri:<%= ENV ['MONGOHQ_URL']%>”到mongoid.yml文件,但它不适合我。
这是我从Heroku那里得到的错误,
“应用程序错误
应用程序中发生错误,无法提供您的页面。请稍后再试。
如果您是应用程序所有者,请查看日志以获取详细信息。“
这就是我的$ heroku日志中的内容
2011-03-12T21:09:57-08:00 heroku [路由器]:错误H10(App崩溃) - > GET autommator.heroku.com/ dyno = none queue = 0 wait = 0ms service = 0ms bytes = 0 2011-03-12T21:09:57-08:00heroku [nginx]:GET / HTTP / 1.1 | 76.112.220.158 | 795 | http | 503
这是我的mongoid.yml文件。
require 'yaml'
YAML::ENGINE.yamler= 'syck'
defaults: &defaults
host: localhost
# slaves:
# - host: slave1.local
# port: 27018
# - host: slave2.local
# port: 27019
development:
<<: *defaults
host: localhost
database: autommator_development
test:
<<: *defaults
host: localhost
database: autommator_test
# set these environment variables on your prod server
production:
uri: <%= ENV['MONGOHQ_URL'] %>
host: <%= ENV['MONGOID_HOST'] %>
port: <%= ENV['MONGOID_PORT'] %>
username: <%= ENV['MONGOID_USERNAME'] %>
password: <%= ENV['MONGOID_PASSWORD'] %>
database: <%= ENV['MONGOID_DATABASE'] %>
完全没有想法。
感谢。
答案 0 :(得分:2)
要将mongoid与Heroku附加组件一起使用,你的mongoid.yml应如下所示:
production:
uri: <%= ENV['MONGOHQ_URL'] %>
您不应该有任何其他数据库连接信息,因此请提取主机,端口,用户名,密码和数据库字段。
答案 1 :(得分:1)
今天早上我发现了问题。我的开发PC上的应用程序运行Ruby 1.9.2。 Heroku默认为1.8.7。
我刚刚运行了本文中的命令,重新加载http://devcenter.heroku.com/articles/bamboo,一切正常。
感谢帮助人员。
答案 2 :(得分:1)
您是通过Heroku插件创建数据库还是直接从MongoHQ创建数据库?如果您是直接从MongoHQ进行的,那么您需要手动设置变量。
heroku config:add MONGOHQ_URL=mongodb://user:pass@server.mongohq.com:port/db_name
如果是通过heroku插件,则应该为您创建。如果添加变量无法向我们发送支持票给support@mongohq.com,我们可以进一步挖掘。
答案 3 :(得分:0)
也许我在这里说明显而易见的事情,但是我们正在做的是从环境中汲取那些价值观。为了使其工作,您需要在heroku环境中设置变量(MONGOHQ_URL等)。我认为对此的命令类似于heroku config:add MONGOHQ_URL=XXXXX
或类似的东西。绝对可以在heroku文档中查找。
鉴于您从环境中获取了值,YML似乎是错误的方法。我建议初始化文件只设置这些值,或者将它们放入某种MONGO_CONFIG,你可以在任何地方读取它们。如果你走这条路线,你也可以将它们设置为env变量(如果预设),或者如果没有则回退到YML文件。
此railscast显示了我正在谈论的内容http://railscasts.com/episodes/85-yaml-configuration-file不同之处在于,当设置变量时,您将其设置为ENV['XXX'] if ENV['XXX']