我尝试初始化集合时遇到了一些错误。我在控制台中发现了同样的事情。
以下代码在rails console
中正常工作,但它会在rails console test
中引发以下错误。只有在尝试访问记录时,才会抛出创建Mongoid::Criteria
的错误。
irb(main):001:0> Activity.last
D, [2015-10-29T14:28:25.920178 #39467] DEBUG -- : MONGODB | Adding localhost:27017 to the cluster.
KeyError: key not found: "primary"
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/server_selector.rb:68:in `fetch'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/server_selector.rb:68:in `get'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/client.rb:192:in `read_preference'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/collection.rb:104:in `read_preference'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/collection/view/readable.rb:411:in `default_read'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/collection/view/readable.rb:300:in `read'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/collection/view/iterable.rb:40:in `block in each'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/retryable.rb:46:in `call'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/retryable.rb:46:in `read_with_retry'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongo-2.1.1/lib/mongo/collection/view/iterable.rb:39:in `each'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/query_cache.rb:207:in `each'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/contextual/mongo.rb:338:in `first'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/contextual/mongo.rb:338:in `block (2 levels) in last'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/contextual/mongo.rb:576:in `with_inverse_sorting'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/contextual/mongo.rb:337:in `block in last'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/contextual/mongo.rb:489:in `try_cache'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/contextual/mongo.rb:336:in `last'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/contextual.rb:20:in `last'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mongoid-5.0.0/lib/mongoid/findable.rb:158:in `last'
from (irb):1
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands/console.rb:110:in `start'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands/console.rb:9:in `start'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:68:in `console'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/USER/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:4:in `require'
我通常使用Postgres,只要测试数据库中存在问题而不是开发问题,rake db:test:prepare
通常会解决问题,但这不起作用。
有什么想法导致这种情况吗?
答案 0 :(得分:2)
我在这里找到答案:https://groups.google.com/forum/#!topic/ruby-capybara/osI2RqdKEDM
在我的配置中,问题出在mongoid.yml的测试数据库配置中:
test:
clients:
default:
database: db_name
hosts:
- localhost:27017
options:
read:
mode: primary
max_pool_size: 1
我刚删除了这个:
read:
mode: primary