Mongodb Mongoid在ruby 1.9.3上失败
所以我在玩mongo的东西。创建了一个新的heroku应用程序,添加了一个mongolab选项,但每个mongoid方法都失败了 我在谷歌上搜索了一下,发现这个问题在ruby 1.9.3之前很常见,但我现在运行的是1.9.3 下面是最简单的失败示例:Mongodb Mongoid在ruby 1.9.3上失败,mongodb,heroku,mongoid,mlab,Mongodb,Heroku,Mongoid,Mlab,所以我在玩mongo的东西。创建了一个新的heroku应用程序,添加了一个mongolab选项,但每个mongoid方法都失败了 我在谷歌上搜索了一下,发现这个问题在ruby 1.9.3之前很常见,但我现在运行的是1.9.3 下面是最简单的失败示例: require 'sinatra' require 'mongoid' require 'json' require "sinatra/reloader" if development? Mongoid.load!("mongoid.yml")
require 'sinatra'
require 'mongoid'
require 'json'
require "sinatra/reloader" if development?
Mongoid.load!("mongoid.yml")
class Company
include Mongoid::Document
field :code, type: String
field :sector, type: String
field :share_id, type: Integer
field :jse_code, type: Integer
end
get '/' do
"Hello"
end
get '/company' do
Company.exists?
end
无论是在本地运行(针对mongolab db)还是在heroku上运行,我都会得到同样的错误:
12:22:33 web.1 | NoMethodError - undefined method `match' for nil:NilClass:
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/mongo_uri.rb:49:in `initialize'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:103:in `new'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:103:in `parse'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:62:in `create_session'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:43:in `default'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions.rb:109:in `default'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions.rb:378:in `__session__'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions.rb:213:in `mongo_session'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions.rb:157:in `collection'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/contextual/mongo.rb:216:in `initialize'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/contextual.rb:47:in `new'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/contextual.rb:47:in `create_context'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/contextual.rb:30:in `context'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/contextual.rb:20:in `rescue in exists?'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/contextual.rb:18:in `exists?'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/finders.rb:43:in `exists?'
12:22:33 web.1 | app.rb:22:in `block in <main>'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `block in compile!'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `[]'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `block (3 levels) in route!'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:851:in `route_eval'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `block (2 levels) in route!'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:872:in `block in process_route'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in `catch'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in `process_route'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:834:in `block in route!'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in `each'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in `route!'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:936:in `dispatch!'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:in `block in call!'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `block in invoke'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `catch'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `invoke'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:in `call!'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:755:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/logger.rb:15:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/commonlogger.rb:20:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:136:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:129:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/showexceptions.rb:21:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:99:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:1389:in `block in call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:1471:in `synchronize'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:1389:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/thin-1.5.0/lib/thin/connection.rb:81:in `block in pre_process'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/thin-1.5.0/lib/thin/connection.rb:79:in `catch'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/thin-1.5.0/lib/thin/connection.rb:79:in `pre_process'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/eventmachine-1.0.0/lib/eventmachine.rb:1037:in `call'
12:22:33 web.1 | /Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/eventmachine-1.0.0/lib/eventmachine.rb:1037:in `block in spawn_threadpool'
12:22:33 web.1 | 127.0.0.1 - - [21/Nov/2012 12:22:33] "GET /__sinatra__/500.png HTTP/1.1" 200 31056 0.0062
12:22:33 web.1 | NoMethodError-未定义nil:NilClass的“match”方法:
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/mongo_uri.rb:49:在“初始化”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:103:in“new”
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:103:in'parse'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:62:在“创建会话”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions/factory.rb:43:默认值
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions.rb:109:默认值
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions.rb:378:in``会话`
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions.rb:213:in'mongo_session'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/sessions.rb:157:在“收藏”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/context/mongo.rb:216:在“初始化”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/context.rb:47:“新建”
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/context.rb:47:在“创建上下文”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/context.rb:30:在“context”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/context.rb:20:in“rescue in exists?”
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/context.rb:18:在“存在”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/mongoid-3.0.13/lib/mongoid/finders.rb:43:in'exists'
12:22:33 web.1 | app.rb:22:in'block in'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:“编译中的块!”
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in`[]'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:在“线路中的块(3层)”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:851:在“路线评估”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:在“线路中的块(2层)”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:872:在“流程中的块”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in'catch'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:进程中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:834:在“线路阻塞”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in'each'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in'route!'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:936:in'dispatch!'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:in'block-in-call!'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:在“调用中的块”中
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in'catch'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in'invoke'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:in'call!'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:755:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/logger.rb:15:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/commonlogger.rb:20:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:136:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/sinatra-1.3.3/lib/sinatra/base.rb:129:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/head.rb:9:in'call'
12:22:33 web.1 |/Users/sdx/.rvm/gems/ruby-1.9.3-p327/gems/
production:
sessions:
default:
uri: <%= ENV['MONGOLAB_URI'] %>
options:
skip_version_check: true
safe: true
development:
sessions:
default:
uri: <%= ENV['MONGOLAB_URI'] %>
# Create the new uri from the provided string.
#
# @example Create the new uri.
# MongoUri.new(uri)
#
# @param [ String ] string The uri string.
#
# @since 3.0.0
def initialize(string)
@match = string.match(URI)
end