【问题标题】:Getting Rails to work on Heroku with Mongo db使用 Mongodb 在 Heroku 上工作受到批评
【发布时间】:2012-04-28 03:21:10
【问题描述】:

我已经下载了一个开源代码ribbot。我是 Ruby 和 Rails 的新手,但我已经设置了我的环境并且能够让这段代码在我的本地机器上运行。

我想使用 Heroku 作为我的服务器基础解决方案。我将此应用程序推送到 Heroku。 Heroku 似乎告诉我该应用程序运行良好,但是我不断通过开源代码重定向到错误页面;它不会在我的本地机器上这样做。我怀疑它与Mongo有关。我已经为 Heroku 下载了 MongoHQ 上的插件,但仍然遇到这个问题。我知道这段代码使用了 mongoid:

2012-04-16T19:06:47+00:00 app[web.1]: localhost:11211 failed (count: 2)
2012-04-16T19:06:47+00:00 app[web.1]: 
2012-04-16T19:06:47+00:00 app[web.1]: 
2012-04-16T19:06:47+00:00 app[web.1]: Started GET "/" for 208.124.140.154 at 2012-04-16 19:06:47 +0000
2012-04-16T19:06:47+00:00 app[web.1]: allow_dynamic_fields is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: autocreate_indexes is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: identity_map_enabled is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: include_root_in_json is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: include_type_for_serialization is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: max_retries_on_connection_failure is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: parameterize_keys is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: scope_overwrite_exception is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: persist_in_safe_mode is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: preload_models is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: raise_not_found_error is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: skip_version_check is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: time_zone is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: use_utc is not a valid option for Mongo::Connection
2012-04-16T19:06:47+00:00 app[web.1]: timestamped_migrations is not a valid option for Mongo::Connection
2012-04-16T19:06:50+00:00 app[web.1]: 
2012-04-16T19:06:50+00:00 app[web.1]: Mongo::ConnectionFailure (Failed to connect to a master node at localhost:27017):
2012-04-16T19:06:50+00:00 app[web.1]:   app/controllers/application_controller.rb:19:in `current_forum'
2012-04-16T19:06:50+00:00 app[web.1]:   app/controllers/application_controller.rb:40:in `require_current_forum!'
2012-04-16T19:06:50+00:00 app[web.1]: 
2012-04-16T19:06:50+00:00 app[web.1]: 
2012-04-16T19:06:50+00:00 app[web.1]: cache: [GET /] miss
2012-04-16T19:06:50+00:00 app[web.1]:   Processing by PostsController#index as HTML
2012-04-16T19:06:50+00:00 app[web.1]: Completed 500 Internal Server Error in 2997ms
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/_request.text.erb (0.2ms)
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/_title.text.erb (0.0ms)
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/_session.text.erb (0.2ms)
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/_title.text.erb (0.0ms)
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/_environment.text.erb (23.9ms)
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/_title.text.erb (0.0ms)
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/_backtrace.text.erb (0.1ms)
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/_title.text.erb (0.0ms)
2012-04-16T19:06:50+00:00 app[web.1]: Rendered vendor/bundle/ruby/1.9.1/gems/exception_notification_rails3-1.2.0/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb (26.8ms)
2012-04-16T19:06:50+00:00 app[web.1]: 
2012-04-16T19:06:50+00:00 app[web.1]: Sent mail to barmstrong@gmail.com (274ms)
2012-04-16T19:06:50+00:00 heroku[router]: GET impact-project.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=3832ms status=500 bytes=728
2012-04-16T19:06:51+00:00 app[web.1]: localhost:11211 failed (count: 3)
2012-04-16T19:06:51+00:00 app[web.1]: cache: [GET /favicon.ico] miss, store
2012-04-16T19:06:51+00:00 app[web.1]: [2012-04-16 19:06:51] ERROR NoMethodError: undefined method `each' for nil:NilClass
2012-04-16T19:06:51+00:00 app[web.1]:   /app/vendor/bundle/ruby/1.9.1/gems/rack-1.3.5/lib/rack/handler/webrick.rb:71:in `service'
2012-04-16T19:06:51+00:00 app[web.1]:   /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
2012-04-16T19:06:51+00:00 app[web.1]:   /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
2012-04-16T19:06:51+00:00 app[web.1]:   /usr/local/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
2012-04-16T19:06:51+00:00 heroku[router]: GET impact-project.herokuapp.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=517ms status=500 bytes=337

【问题讨论】:

  • 我们可以看看你的config/mongoid.yml吗?
  • 另外,您是否在 Heroku 上安装了任何 Mongo 插件?
  • 您好,很抱歉回复晚了。是的,我已经添加了 mongo 插件
  • 开发:主机:localhost 数据库:ribbot_development 测试:主机:localhost 数据库:ribbot_test 生产:uri:
  • 这是否意味着我应该使用 mongolab 而不是 mongoHQ?

标签: ruby-on-rails mongodb heroku


【解决方案1】:

如果您在 Heroku 中安装了 MongoHQ 插件,它会创建一个 MONGOHQ_URL 环境变量,您的 Rails 应用可以使用该环境变量连接到数据库。看起来您的 config/mongoid.yml 配置不正确。这是 Heroku 和 MongoHQ 的一个工作示例:

development:
    host: localhost
    database: yourapp_dev

test:
   host: localhost
   database: yourapp_test

# set these environment variables on your prod server
production:
    uri: <%= ENV['MONGOHQ_URL'] %>

希望这会有所帮助!

【讨论】:

  • 感谢您的回复。刚刚看到我的 mongoid.yml 与 urs 非常相似,但我指定了 MONGOLAB_IRL。这是否意味着我应该安装 mongolab 插件?
  • 这取决于您的 Heroku 应用程序正在使用什么以及您的偏好。通过在 CLI 中使用命令 heroku addons 检查您是否在应用程序上安装了任一插件。如果两者都不存在,只需选择并使用您喜欢的任何一个。环境变量在 Rails 配置中的工作方式应该相同。
猜你喜欢
  • 2019-05-09
  • 2019-10-19
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 2011-11-26
  • 2019-12-02
  • 1970-01-01
  • 2019-12-16
相关资源
最近更新 更多