0

我正在尝试让我的应用程序在线并与 Heroku 一起运行。

该应用程序使用 MongoHQ 和 Mongoid。

我已经阅读了多个指南,只是说将“uri:<%= ENV['MONGOHQ_URL'] %>”添加到 mongoid.yml 文件中,但这对我不起作用。

这是我从 Heroku 得到的错误,

“应用程序错误

应用程序发生错误,无法提供您的页面。请稍后重试。

如果您是应用程序所有者,请查看您的日志以获取详细信息。”

这就是我的 $ heroku 日志中的内容

2011-03-12T21:09:57-08:00 heroku [路由器]:错误 H10(应用程序崩溃)-> 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

4 回答 4

2

要将 mongoid 与 Heroku 插件一起使用,您的 mongoid.yml 应如下所示:

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

那里不应该有任何其他数据库连接信息,因此请取出主机、端口、用户名、密码和数据库字段。

于 2011-03-14T02:20:33.830 回答
1

我今天早上发现了问题。我的开发 PC 上的应用程序正在运行 Ruby 1.9.2。Heroku 默认为 1.8.7。

我刚刚运行了这篇文章中的命令,http: //devcenter.heroku.com/articles/bamboo reloaded,一切正常。

谢谢你们的帮助。

于 2011-03-14T10:00:07.247 回答
1

您是通过 Heroku 插件还是直接从 MongoHQ 创建数据库?如果您直接从 MongoHQ 执行此操作,则需要手动设置变量。

heroku config:add MONGOHQ_URL=mongodb://user:pass@server.mongohq.com:port/db_name

如果它是通过 heroku 插件,那么它应该为你创建。如果添加变量没有帮助,请向 support@mongohq.com 发送支持票,我们可以进一步挖掘。

于 2011-11-04T21:57:10.147 回答
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']

于 2011-03-13T21:55:03.020 回答