【问题标题】:uninitialized constant BSON::ByteBuffer (Heroku)未初始化的常量 BSON::ByteBuffer (Heroku)
【发布时间】:2013-09-16 12:36:05
【问题描述】:

我在 Heroku 上的“应用程序启动”时收到此错误。在本地主机上一切正常。

app.rb (Sinatra)

require 'uri'
require 'sinatra'
require 'mongo'
require "bson"
require 'chartkick'
require 'omniauth-facebook'

include Mongo

use Rack::Session::Cookie
use OmniAuth::Builder do
    provider :facebook, "KEY", "SECRET", :scope => 'read_stream'
end

#### DATABASE #######
def get_connection
  return @db_connection if @db_connection
  db = URI.parse(ENV['MONGOHQ_URL'] || 'mongodb://localhost/facebook')
  db_name = db.path.gsub(/^\//, '')
  @db_connection = Mongo::Connection.new(db.host, db.port).db(db_name)
  @db_connection.authenticate(db.user, db.password) unless (db.user.nil? || db.user.nil?)
  @db_connection
end

db = get_connection

宝石文件

source 'https://rubygems.org'
ruby '2.0.0'

gem 'mongo'
gem "bson"
gem 'bson_ext'
gem "sinatra"
gem "koala", "~> 1.7.0rc1"
gem "chartkick"
gem 'omniauth-facebook'

config.ru

require './app'
run Sinatra::Application

** Heroku 日志 **

 Slug compilation finished
2013-09-16T12:32:07.666778+00:00 heroku[web.1]: State changed from crashed to starting
2013-09-16T12:32:11.011518+00:00 heroku[web.1]: Starting process with command `bundle exec rackup config.ru -p 21566`
2013-09-16T12:32:12.324776+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/cursor.rb:419:in `construct_query_message': uninitialized constant BSON::ByteBuffer (NameError)
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/app.rb:21:in `new'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:40:in `parse_file'
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/cursor.rb:405:in `send_initial_query'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/app.rb:21:in `get_connection'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:277:in `build_app_and_options_from_config'
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/cursor.rb:371:in `refresh'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/app.rb:26:in `<top (required)>'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:199:in `app'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/config.ru:1:in `require'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:49:in `eval'
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/cursor.rb:87:in `next_document'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/config.ru:1:in `block in <main>'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:314:in `wrapped_app'
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/db.rb:498:in `command'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:250:in `start'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bin/rackup:23:in `<main>'
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/connection.rb:704:in `check_is_master'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/connection.rb:656:in `setup'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/config.ru:in `new'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:141:in `start'
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/connection.rb:504:in `connect'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/config.ru:in `<main>'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/bin/rackup:4:in `<top (required)>'
2013-09-16T12:32:12.324776+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/mongo-1.3.1/lib/mongo/connection.rb:101:in `initialize'
2013-09-16T12:32:12.325003+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:49:in `new_from_string'
2013-09-16T12:32:12.325160+00:00 app[web.1]:    from /app/vendor/bundle/ruby/2.0.0/bin/rackup:23:in `load'
2013-09-16T12:32:13.530315+00:00 heroku[web.1]: Process exited with status 1
2013-09-16T12:32:13.544931+00:00 heroku[web.1]: State changed from starting to crashed

【问题讨论】:

  • 您使用 ruby​​ 2.0.0 而不是 1.9.x 有什么原因吗?你试过 1.9.x 吗?你能在本地检查你是否可以找到 BSON::ByteBuffer,即 ruby​​ -e 'require "bson";放 BSON::ByteBuffer' ?并在 Heroku 控制台中的 irb 中执行类似操作,例如如此处所述devcenter.heroku.com/articles/console-bamboo?此外,在 app.rb 的第 21 行,条件读取为“除非 (db.user.nil?|| db.user.nil?)”。我想你是想测试 db.password.nil 吗?而不是 db.user.nil?两次。
  • 我试过了。如果我运行 ruby​​ -e 'require "bson";将 BSON::ByteBuffer' 放在我的本地机器上我得到未初始化的常量 BSON::ByteBuffer。 (现在使用 ruby​​ 1.9.2)
  • 我遇到了同样的错误。在本地和我部署的版本上。我的 rails 应用程序一直运行良好,直到今天。
  • @asprotte 你解决了吗?

标签: mongodb heroku sinatra mongohq


【解决方案1】:

日志显示名称错误。我建议您指定正确的范围。 Rails 有一种非常复杂的查找常量的方法。我建议你看看这个:

http://urbanautomaton.com/blog/2013/08/27/rails-autoloading-hell/

还有这个

http://pothibo.com/2013/07/namespace-stuff-in-your-app-folder/。 希望对您有所帮助。

【讨论】:

  • 阅读。我无法弄清楚这种情况下的问题是什么
【解决方案2】:

看起来您使用的 Mongo 是 1.3.1,而 BSON 可能是 2.0。这些似乎不能一起工作。我会尝试将 1.9 BSON 放在那里,看看是否可行。

您可以通过添加: 宝石“bson”,“~> 1.9.2”

到您的 Gemfile。

希望有帮助吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    相关资源
    最近更新 更多