【问题标题】:Application Crash with Heroku, Mongoid, and MongoHQHeroku、Mongoid 和 MongoHQ 导致应用程序崩溃
【发布时间】:2011-07-14 08:14:45
【问题描述】:

我正在尝试让我的应用程序联机并使用 Heroku 运行。

应用程序使用 MongoHQ 和 Mongoid。

我已经阅读了多个指南,只是说将“uri:”添加到 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'] %>

完全没有想法。

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      我刚刚运行了本文中的命令,http://devcenter.heroku.com/articles/bamboo 重新加载,一切正常。

      感谢大家的帮助。

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • @Paul-Elliot 遗憾的是,应用程序继续崩溃。我在日志中进行了更多挖掘,那里有一个“/home /config/boot.rb:3: uninitialized constant YAML::ENGINE (NameError)”。我不知道这是否有帮助。
        • 哦,我什至没有注意到文件顶部的要求。尝试删除前两行。我怀疑这是你的问题。
        • 感谢 Paul 的帮助,但是我找到了解决方案,但它不在 yml 文件中。 “我今天早上发现了问题。我的开发 PC 上的应用程序正在运行 Ruby 1.9.2。Heroku 默认为 1.8.7。我刚刚运行了本文中找到的命令,devcenter.heroku.com/articles/bamboo reloaded,一切正常。谢谢帮助家伙。”
        【解决方案4】:

        也许我在这里说的是显而易见的,但这样做是从环境中提取那些价值。为了使其工作,您需要在 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']

        【讨论】:

        • MONGOHQ_URL 值是在安装 MongoHQ 插件时在 heroku 环境中设置的。这应该足以连接到 MongoHQ 远程数据库。
        • 你确认他们都在那里了吗?只是编写将它们打印出来的代码还是什么?这就是我无论如何都会做的。也就是说,作为开发人员,我不会考虑在 yml 文件中查找代码。
        • @John-Hinnegan 我运行了 heroku config --long 并确认已安装 MongoHQ 并且我有一个 MongoHQ 帐户/远程数据库。我无法编写输出代码,因为应用程序在 heroku 上运行时崩溃。这是输出: 2011-03-12T21:09:57-08:00 heroku[router]: Error H10 (App crashed) -> GET autommator.heroku.com/dyno=none queue=0 wait=0ms service=0ms字节=0 2011-03-12T21:09:57-08:00heroku[nginx]: GET / HTTP/1.1 | 76.112.220.158 | 795 | http | 503
        猜你喜欢
        • 2023-03-24
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-16
        • 2017-08-22
        • 2012-02-22
        • 2017-10-03
        相关资源
        最近更新 更多