与Heroku,Mongoid和MongoHQ的应用程序崩溃

时间:2011-03-13 05:20:35

标签: ruby-on-rails ruby-on-rails-3 heroku mongoid mongohq

我正在尝试将我的应用程序联机并使用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'] %>

完全没有想法。

感谢。

4 个答案:

答案 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']