Commit 99752a49250db4d44a6dfe1f767051a0ca70e9b0
Exists in
master
and in
1 other branch
Merge pull request #515 from arthurnn/mongoid_upgrade
Conflicts: app/models/notice.rb
Showing
27 changed files
with
145 additions
and
157 deletions
Show diff stats
.travis.yml
| @@ -4,16 +4,12 @@ env: | @@ -4,16 +4,12 @@ env: | ||
| 4 | rvm: | 4 | rvm: |
| 5 | - 2.0.0 | 5 | - 2.0.0 |
| 6 | - 1.9.3 | 6 | - 1.9.3 |
| 7 | - - 1.9.2 | ||
| 8 | - - 1.8.7 | ||
| 9 | - rbx-19mode | 7 | - rbx-19mode |
| 10 | - - rbx-18mode | ||
| 11 | services: mongodb | 8 | services: mongodb |
| 12 | #script: ./script/rspec-queue-mongoid.rb --format progress spec | 9 | #script: ./script/rspec-queue-mongoid.rb --format progress spec |
| 13 | matrix: | 10 | matrix: |
| 14 | allow_failures: | 11 | allow_failures: |
| 15 | - rvm: rbx-19mode | 12 | - rvm: rbx-19mode |
| 16 | - - rvm: rbx-18mode | ||
| 17 | 13 | ||
| 18 | # To stop Travis from running tests for a new commit, | 14 | # To stop Travis from running tests for a new commit, |
| 19 | # add the following to your commit message: [ci skip] | 15 | # add the following to your commit message: [ci skip] |
Gemfile
| 1 | source 'http://rubygems.org' | 1 | source 'http://rubygems.org' |
| 2 | 2 | ||
| 3 | gem 'rails', '3.2.13' | 3 | gem 'rails', '3.2.13' |
| 4 | -gem 'mongoid', '~> 2.7.1' | 4 | +gem 'mongoid', '~> 3.1.4' |
| 5 | 5 | ||
| 6 | -# Mongoid rails migration > 0.0.14 is not compatible to Mongoid 2.x | ||
| 7 | -gem 'mongoid_rails_migrations', '~> 0.0.14' | ||
| 8 | -gem 'devise', '~> 2.2.6' # Last version supporting ruby 1.8.7 | 6 | +gem 'mongoid_rails_migrations', '~> 1.0.1' |
| 7 | +gem 'devise' | ||
| 9 | gem 'haml' | 8 | gem 'haml' |
| 10 | gem 'htmlentities' | 9 | gem 'htmlentities' |
| 11 | gem 'rack-ssl', :require => 'rack/ssl' # force SSL | 10 | gem 'rack-ssl', :require => 'rack/ssl' # force SSL |
| @@ -75,13 +74,6 @@ gem 'flowdock' | @@ -75,13 +74,6 @@ gem 'flowdock' | ||
| 75 | # GitHub OAuth | 74 | # GitHub OAuth |
| 76 | gem 'omniauth-github' | 75 | gem 'omniauth-github' |
| 77 | 76 | ||
| 78 | - | ||
| 79 | -platform :ruby do | ||
| 80 | - gem 'mongo' | ||
| 81 | - gem 'bson' | ||
| 82 | - gem 'bson_ext' | ||
| 83 | -end | ||
| 84 | - | ||
| 85 | gem 'ri_cal' | 77 | gem 'ri_cal' |
| 86 | gem 'yajl-ruby', :require => "yajl" | 78 | gem 'yajl-ruby', :require => "yajl" |
| 87 | 79 |
Gemfile.lock
| 1 | GIT | 1 | GIT |
| 2 | remote: https://github.com/NARKOZ/gitlab.git | 2 | remote: https://github.com/NARKOZ/gitlab.git |
| 3 | - revision: 53d7a8a86dfed63e56eeb16ea496bb7a82de337e | 3 | + revision: 7a00d38c53335010d2fb8a233247fe2c97338903 |
| 4 | specs: | 4 | specs: |
| 5 | gitlab (2.2.0) | 5 | gitlab (2.2.0) |
| 6 | httparty | 6 | httparty |
| @@ -41,8 +41,7 @@ GEM | @@ -41,8 +41,7 @@ GEM | ||
| 41 | i18n (= 0.6.1) | 41 | i18n (= 0.6.1) |
| 42 | multi_json (~> 1.0) | 42 | multi_json (~> 1.0) |
| 43 | addressable (2.3.5) | 43 | addressable (2.3.5) |
| 44 | - airbrake (3.1.12) | ||
| 45 | - activesupport | 44 | + airbrake (3.1.13) |
| 46 | builder | 45 | builder |
| 47 | json | 46 | json |
| 48 | arel (3.0.2) | 47 | arel (3.0.2) |
| @@ -59,9 +58,6 @@ GEM | @@ -59,9 +58,6 @@ GEM | ||
| 59 | multi_json (~> 1.3) | 58 | multi_json (~> 1.3) |
| 60 | nokogiri (~> 1.5.2) | 59 | nokogiri (~> 1.5.2) |
| 61 | simple_oauth | 60 | simple_oauth |
| 62 | - bson (1.8.6) | ||
| 63 | - bson_ext (1.8.6) | ||
| 64 | - bson (~> 1.8.6) | ||
| 65 | builder (3.0.4) | 61 | builder (3.0.4) |
| 66 | callsite (0.0.11) | 62 | callsite (0.0.11) |
| 67 | campy (0.1.3) | 63 | campy (0.1.3) |
| @@ -104,7 +100,7 @@ GEM | @@ -104,7 +100,7 @@ GEM | ||
| 104 | debugger-linecache (1.2.0) | 100 | debugger-linecache (1.2.0) |
| 105 | debugger-ruby_core_source (1.2.3) | 101 | debugger-ruby_core_source (1.2.3) |
| 106 | decent_exposure (2.2.1) | 102 | decent_exposure (2.2.1) |
| 107 | - devise (2.2.6) | 103 | + devise (2.2.7) |
| 108 | bcrypt-ruby (~> 3.0) | 104 | bcrypt-ruby (~> 3.0) |
| 109 | orm_adapter (~> 0.1) | 105 | orm_adapter (~> 0.1) |
| 110 | railties (~> 3.1) | 106 | railties (~> 3.1) |
| @@ -137,7 +133,7 @@ GEM | @@ -137,7 +133,7 @@ GEM | ||
| 137 | hashie (1.2.0) | 133 | hashie (1.2.0) |
| 138 | highline (1.6.19) | 134 | highline (1.6.19) |
| 139 | hike (1.2.3) | 135 | hike (1.2.3) |
| 140 | - hipchat (0.10.0) | 136 | + hipchat (0.11.0) |
| 141 | httparty | 137 | httparty |
| 142 | hoi (0.0.6) | 138 | hoi (0.0.6) |
| 143 | httparty (> 0.6.0) | 139 | httparty (> 0.6.0) |
| @@ -168,8 +164,8 @@ GEM | @@ -168,8 +164,8 @@ GEM | ||
| 168 | kgio (2.8.0) | 164 | kgio (2.8.0) |
| 169 | launchy (2.3.0) | 165 | launchy (2.3.0) |
| 170 | addressable (~> 2.3) | 166 | addressable (~> 2.3) |
| 171 | - libv8 (3.11.8.17) | ||
| 172 | - libxml-ruby (2.6.0) | 167 | + libv8 (3.16.14.3) |
| 168 | + libxml-ruby (2.7.0) | ||
| 173 | lighthouse-api (2.0) | 169 | lighthouse-api (2.0) |
| 174 | activeresource (>= 3.0.0) | 170 | activeresource (>= 3.0.0) |
| 175 | activesupport (>= 3.0.0) | 171 | activesupport (>= 3.0.0) |
| @@ -178,24 +174,24 @@ GEM | @@ -178,24 +174,24 @@ GEM | ||
| 178 | mail (2.5.4) | 174 | mail (2.5.4) |
| 179 | mime-types (~> 1.16) | 175 | mime-types (~> 1.16) |
| 180 | treetop (~> 1.4.8) | 176 | treetop (~> 1.4.8) |
| 181 | - meta_request (0.2.7) | 177 | + meta_request (0.2.8) |
| 182 | callsite | 178 | callsite |
| 183 | rack-contrib | 179 | rack-contrib |
| 184 | railties | 180 | railties |
| 185 | method_source (0.8.2) | 181 | method_source (0.8.2) |
| 186 | - mime-types (1.23) | ||
| 187 | - mongo (1.8.6) | ||
| 188 | - bson (~> 1.8.6) | ||
| 189 | - mongoid (2.7.1) | ||
| 190 | - activemodel (~> 3.1) | ||
| 191 | - mongo (~> 1.8) | 182 | + mime-types (1.24) |
| 183 | + mongoid (3.1.4) | ||
| 184 | + activemodel (~> 3.2) | ||
| 185 | + moped (~> 1.4) | ||
| 186 | + origin (~> 1.0) | ||
| 192 | tzinfo (~> 0.3.22) | 187 | tzinfo (~> 0.3.22) |
| 193 | - mongoid_rails_migrations (0.0.14) | ||
| 194 | - activesupport (>= 3.0.0) | 188 | + mongoid_rails_migrations (1.0.1) |
| 189 | + activesupport (>= 3.2.0) | ||
| 195 | bundler (>= 1.0.0) | 190 | bundler (>= 1.0.0) |
| 196 | - rails (>= 3.0.0) | ||
| 197 | - railties (>= 3.0.0) | ||
| 198 | - multi_json (1.7.8) | 191 | + rails (>= 3.2.0) |
| 192 | + railties (>= 3.2.0) | ||
| 193 | + moped (1.5.1) | ||
| 194 | + multi_json (1.7.9) | ||
| 199 | multi_xml (0.5.5) | 195 | multi_xml (0.5.5) |
| 200 | multipart-post (1.2.0) | 196 | multipart-post (1.2.0) |
| 201 | net-scp (1.1.2) | 197 | net-scp (1.1.2) |
| @@ -230,19 +226,18 @@ GEM | @@ -230,19 +226,18 @@ GEM | ||
| 230 | omniauth-oauth2 (1.1.1) | 226 | omniauth-oauth2 (1.1.1) |
| 231 | oauth2 (~> 0.8.0) | 227 | oauth2 (~> 0.8.0) |
| 232 | omniauth (~> 1.0) | 228 | omniauth (~> 1.0) |
| 229 | + origin (1.1.0) | ||
| 233 | orm_adapter (0.4.0) | 230 | orm_adapter (0.4.0) |
| 234 | oruen_redmine_client (0.0.1) | 231 | oruen_redmine_client (0.0.1) |
| 235 | activeresource (>= 2.3.0) | 232 | activeresource (>= 2.3.0) |
| 236 | pivotal-tracker (0.5.10) | 233 | pivotal-tracker (0.5.10) |
| 237 | builder | 234 | builder |
| 238 | - builder | ||
| 239 | crack | 235 | crack |
| 240 | happymapper (>= 0.3.2) | 236 | happymapper (>= 0.3.2) |
| 241 | nokogiri (>= 1.4.3) | 237 | nokogiri (>= 1.4.3) |
| 242 | nokogiri (>= 1.5.5) | 238 | nokogiri (>= 1.5.5) |
| 243 | nokogiri-happymapper (>= 0.5.4) | 239 | nokogiri-happymapper (>= 0.5.4) |
| 244 | rest-client (~> 1.6.0) | 240 | rest-client (~> 1.6.0) |
| 245 | - rest-client (~> 1.6.0) | ||
| 246 | pjax_rails (0.3.4) | 241 | pjax_rails (0.3.4) |
| 247 | jquery-rails | 242 | jquery-rails |
| 248 | polyglot (0.3.3) | 243 | polyglot (0.3.3) |
| @@ -293,8 +288,8 @@ GEM | @@ -293,8 +288,8 @@ GEM | ||
| 293 | rest-client (1.6.7) | 288 | rest-client (1.6.7) |
| 294 | mime-types (>= 1.16) | 289 | mime-types (>= 1.16) |
| 295 | ri_cal (0.8.8) | 290 | ri_cal (0.8.8) |
| 296 | - rspec-core (2.14.4) | ||
| 297 | - rspec-expectations (2.14.1) | 291 | + rspec-core (2.14.5) |
| 292 | + rspec-expectations (2.14.2) | ||
| 298 | diff-lcs (>= 1.1.3, < 2.0) | 293 | diff-lcs (>= 1.1.3, < 2.0) |
| 299 | rspec-mocks (2.14.3) | 294 | rspec-mocks (2.14.3) |
| 300 | rspec-rails (2.14.0) | 295 | rspec-rails (2.14.0) |
| @@ -316,7 +311,7 @@ GEM | @@ -316,7 +311,7 @@ GEM | ||
| 316 | json | 311 | json |
| 317 | rest-client | 312 | rest-client |
| 318 | safe_yaml (0.9.5) | 313 | safe_yaml (0.9.5) |
| 319 | - selenium-webdriver (2.34.0) | 314 | + selenium-webdriver (2.35.0) |
| 320 | childprocess (>= 0.2.5) | 315 | childprocess (>= 0.2.5) |
| 321 | multi_json (~> 1.0) | 316 | multi_json (~> 1.0) |
| 322 | rubyzip | 317 | rubyzip |
| @@ -343,8 +338,8 @@ GEM | @@ -343,8 +338,8 @@ GEM | ||
| 343 | taskmapper-unfuddle (0.7.0) | 338 | taskmapper-unfuddle (0.7.0) |
| 344 | addressable (~> 2.2) | 339 | addressable (~> 2.2) |
| 345 | taskmapper (~> 0.8) | 340 | taskmapper (~> 0.8) |
| 346 | - therubyracer (0.11.4) | ||
| 347 | - libv8 (~> 3.11.8.12) | 341 | + therubyracer (0.12.0) |
| 342 | + libv8 (~> 3.16.14.0) | ||
| 348 | ref | 343 | ref |
| 349 | thin (1.5.1) | 344 | thin (1.5.1) |
| 350 | daemons (>= 1.0.9) | 345 | daemons (>= 1.0.9) |
| @@ -353,10 +348,10 @@ GEM | @@ -353,10 +348,10 @@ GEM | ||
| 353 | thor (0.18.1) | 348 | thor (0.18.1) |
| 354 | tilt (1.4.1) | 349 | tilt (1.4.1) |
| 355 | timecop (0.6.1) | 350 | timecop (0.6.1) |
| 356 | - treetop (1.4.14) | 351 | + treetop (1.4.15) |
| 357 | polyglot | 352 | polyglot |
| 358 | polyglot (>= 0.3.1) | 353 | polyglot (>= 0.3.1) |
| 359 | - turbo-sprockets-rails3 (0.3.6) | 354 | + turbo-sprockets-rails3 (0.3.9) |
| 360 | railties (> 3.2.8, < 4.0.0) | 355 | railties (> 3.2.8, < 4.0.0) |
| 361 | sprockets (>= 2.0.0) | 356 | sprockets (>= 2.0.0) |
| 362 | tzinfo (0.3.37) | 357 | tzinfo (0.3.37) |
| @@ -390,8 +385,6 @@ DEPENDENCIES | @@ -390,8 +385,6 @@ DEPENDENCIES | ||
| 390 | better_errors | 385 | better_errors |
| 391 | binding_of_caller | 386 | binding_of_caller |
| 392 | bitbucket_rest_api | 387 | bitbucket_rest_api |
| 393 | - bson | ||
| 394 | - bson_ext | ||
| 395 | campy (= 0.1.3) | 388 | campy (= 0.1.3) |
| 396 | capistrano | 389 | capistrano |
| 397 | capybara (~> 2.0.1) | 390 | capybara (~> 2.0.1) |
| @@ -399,7 +392,7 @@ DEPENDENCIES | @@ -399,7 +392,7 @@ DEPENDENCIES | ||
| 399 | database_cleaner (~> 0.9.0) | 392 | database_cleaner (~> 0.9.0) |
| 400 | debugger | 393 | debugger |
| 401 | decent_exposure | 394 | decent_exposure |
| 402 | - devise (~> 2.2.6) | 395 | + devise |
| 403 | email_spec | 396 | email_spec |
| 404 | execjs | 397 | execjs |
| 405 | fabrication (~> 1.3.0) | 398 | fabrication (~> 1.3.0) |
| @@ -418,9 +411,8 @@ DEPENDENCIES | @@ -418,9 +411,8 @@ DEPENDENCIES | ||
| 418 | launchy | 411 | launchy |
| 419 | lighthouse-api | 412 | lighthouse-api |
| 420 | meta_request | 413 | meta_request |
| 421 | - mongo | ||
| 422 | - mongoid (~> 2.7.1) | ||
| 423 | - mongoid_rails_migrations (~> 0.0.14) | 414 | + mongoid (~> 3.1.4) |
| 415 | + mongoid_rails_migrations (~> 1.0.1) | ||
| 424 | octokit | 416 | octokit |
| 425 | omniauth-github | 417 | omniauth-github |
| 426 | oruen_redmine_client | 418 | oruen_redmine_client |
app/controllers/api/v1/notices_controller.rb
| @@ -11,7 +11,9 @@ class Api::V1::NoticesController < ApplicationController | @@ -11,7 +11,9 @@ class Api::V1::NoticesController < ApplicationController | ||
| 11 | query = {:created_at => {"$lte" => end_date, "$gte" => start_date}} | 11 | query = {:created_at => {"$lte" => end_date, "$gte" => start_date}} |
| 12 | end | 12 | end |
| 13 | 13 | ||
| 14 | - results = benchmark("[api/v1/notices_controller] query time") { Mongoid.master["notices"].find(query, :fields => fields).to_a } | 14 | + results = benchmark("[api/v1/notices_controller] query time") do |
| 15 | + Notice.where(query).with(:consistency => :strong).only(fields).to_a | ||
| 16 | + end | ||
| 15 | 17 | ||
| 16 | respond_to do |format| | 18 | respond_to do |format| |
| 17 | format.html { render :json => Yajl.dump(results) } # render JSON if no extension specified on path | 19 | format.html { render :json => Yajl.dump(results) } # render JSON if no extension specified on path |
app/controllers/api/v1/problems_controller.rb
| 1 | class Api::V1::ProblemsController < ApplicationController | 1 | class Api::V1::ProblemsController < ApplicationController |
| 2 | respond_to :json, :xml | 2 | respond_to :json, :xml |
| 3 | - | 3 | + |
| 4 | def index | 4 | def index |
| 5 | query = {} | 5 | query = {} |
| 6 | fields = %w{app_id app_name environment message where first_notice_at last_notice_at resolved resolved_at notices_count} | 6 | fields = %w{app_id app_name environment message where first_notice_at last_notice_at resolved resolved_at notices_count} |
| 7 | - | 7 | + |
| 8 | if params.key?(:start_date) && params.key?(:end_date) | 8 | if params.key?(:start_date) && params.key?(:end_date) |
| 9 | start_date = Time.parse(params[:start_date]).utc | 9 | start_date = Time.parse(params[:start_date]).utc |
| 10 | end_date = Time.parse(params[:end_date]).utc | 10 | end_date = Time.parse(params[:end_date]).utc |
| 11 | query = {:first_notice_at=>{"$lte"=>end_date}, "$or"=>[{:resolved_at=>nil}, {:resolved_at=>{"$gte"=>start_date}}]} | 11 | query = {:first_notice_at=>{"$lte"=>end_date}, "$or"=>[{:resolved_at=>nil}, {:resolved_at=>{"$gte"=>start_date}}]} |
| 12 | end | 12 | end |
| 13 | - | ||
| 14 | - results = benchmark("[api/v1/problems_controller] query time") { Mongoid.master["problems"].find(query, :fields => fields).to_a } | ||
| 15 | - | 13 | + |
| 14 | + results = benchmark("[api/v1/problems_controller] query time") do | ||
| 15 | + Problem.where(query).with(:consistency => :strong).only(fields).to_a | ||
| 16 | + end | ||
| 17 | + | ||
| 16 | respond_to do |format| | 18 | respond_to do |format| |
| 17 | format.html { render :json => Yajl.dump(results) } # render JSON if no extension specified on path | 19 | format.html { render :json => Yajl.dump(results) } # render JSON if no extension specified on path |
| 18 | format.json { render :json => Yajl.dump(results) } | 20 | format.json { render :json => Yajl.dump(results) } |
| 19 | format.xml { render :xml => results } | 21 | format.xml { render :xml => results } |
| 20 | end | 22 | end |
| 21 | end | 23 | end |
| 22 | - | 24 | + |
| 23 | end | 25 | end |
app/interactors/problem_destroy.rb
| @@ -37,12 +37,12 @@ class ProblemDestroy | @@ -37,12 +37,12 @@ class ProblemDestroy | ||
| 37 | end | 37 | end |
| 38 | 38 | ||
| 39 | def delete_errs | 39 | def delete_errs |
| 40 | - Notice.collection.remove(:err_id => { '$in' => errs_id }) | ||
| 41 | - Err.collection.remove(:_id => { '$in' => errs_id }) | 40 | + Notice.delete_all(:err_id => { '$in' => errs_id }) |
| 41 | + Err.delete_all(:_id => { '$in' => errs_id }) | ||
| 42 | end | 42 | end |
| 43 | 43 | ||
| 44 | def delete_comments | 44 | def delete_comments |
| 45 | - Comment.collection.remove(:_id => { '$in' => comments_id }) | 45 | + Comment.delete_all(:_id => { '$in' => comments_id }) |
| 46 | end | 46 | end |
| 47 | 47 | ||
| 48 | end | 48 | end |
app/interactors/resolved_problem_clearer.rb
| @@ -27,6 +27,6 @@ class ResolvedProblemClearer | @@ -27,6 +27,6 @@ class ResolvedProblemClearer | ||
| 27 | end | 27 | end |
| 28 | 28 | ||
| 29 | def repair_database | 29 | def repair_database |
| 30 | - Mongoid.config.master.command(:repairDatabase => 1) | 30 | + Mongoid.default_session.command :repairDatabase => 1 |
| 31 | end | 31 | end |
| 32 | end | 32 | end |
app/models/app.rb
| @@ -15,9 +15,6 @@ class App | @@ -15,9 +15,6 @@ class App | ||
| 15 | field :notify_on_deploys, :type => Boolean, :default => false | 15 | field :notify_on_deploys, :type => Boolean, :default => false |
| 16 | field :email_at_notices, :type => Array, :default => Errbit::Config.email_at_notices | 16 | field :email_at_notices, :type => Array, :default => Errbit::Config.email_at_notices |
| 17 | 17 | ||
| 18 | - # Some legacy apps may have string as key instead of BSON::ObjectID | ||
| 19 | - identity :type => String | ||
| 20 | - | ||
| 21 | embeds_many :watchers | 18 | embeds_many :watchers |
| 22 | embeds_many :deploys | 19 | embeds_many :deploys |
| 23 | embeds_one :issue_tracker | 20 | embeds_one :issue_tracker |
| @@ -61,7 +58,7 @@ class App | @@ -61,7 +58,7 @@ class App | ||
| 61 | end | 58 | end |
| 62 | 59 | ||
| 63 | def self.find_by_api_key!(key) | 60 | def self.find_by_api_key!(key) |
| 64 | - where(:api_key => key).first || raise(Mongoid::Errors::DocumentNotFound.new(self,key)) | 61 | + find_by(:api_key => key) |
| 65 | end | 62 | end |
| 66 | 63 | ||
| 67 | def last_deploy_at | 64 | def last_deploy_at |
app/models/backtrace.rb
| @@ -3,7 +3,7 @@ class Backtrace | @@ -3,7 +3,7 @@ class Backtrace | ||
| 3 | include Mongoid::Timestamps | 3 | include Mongoid::Timestamps |
| 4 | 4 | ||
| 5 | field :fingerprint | 5 | field :fingerprint |
| 6 | - index :fingerprint | 6 | + index :fingerprint => 1 |
| 7 | 7 | ||
| 8 | has_many :notices | 8 | has_many :notices |
| 9 | has_one :notice | 9 | has_one :notice |
| @@ -19,7 +19,7 @@ class Backtrace | @@ -19,7 +19,7 @@ class Backtrace | ||
| 19 | end | 19 | end |
| 20 | 20 | ||
| 21 | def similar | 21 | def similar |
| 22 | - Backtrace.first(:conditions => { :fingerprint => fingerprint } ) | 22 | + Backtrace.find_by(:fingerprint => fingerprint) rescue nil |
| 23 | end | 23 | end |
| 24 | 24 | ||
| 25 | def raw=(raw) | 25 | def raw=(raw) |
app/models/comment.rb
| @@ -6,7 +6,7 @@ class Comment | @@ -6,7 +6,7 @@ class Comment | ||
| 6 | before_destroy :decrease_counter_cache | 6 | before_destroy :decrease_counter_cache |
| 7 | 7 | ||
| 8 | field :body, :type => String | 8 | field :body, :type => String |
| 9 | - index :user_id | 9 | + index(:user_id => 1) |
| 10 | 10 | ||
| 11 | belongs_to :err, :class_name => "Problem" | 11 | belongs_to :err, :class_name => "Problem" |
| 12 | belongs_to :user | 12 | belongs_to :user |
app/models/deploy.rb
| @@ -8,7 +8,7 @@ class Deploy | @@ -8,7 +8,7 @@ class Deploy | ||
| 8 | field :revision | 8 | field :revision |
| 9 | field :message | 9 | field :message |
| 10 | 10 | ||
| 11 | - index :created_at, Mongo::DESCENDING | 11 | + index(:created_at => -1) |
| 12 | 12 | ||
| 13 | embedded_in :app, :inverse_of => :deploys | 13 | embedded_in :app, :inverse_of => :deploys |
| 14 | 14 |
app/models/err.rb
| @@ -8,8 +8,8 @@ class Err | @@ -8,8 +8,8 @@ class Err | ||
| 8 | 8 | ||
| 9 | field :fingerprint | 9 | field :fingerprint |
| 10 | 10 | ||
| 11 | - index :problem_id | ||
| 12 | - index :fingerprint | 11 | + index problem_id: 1 |
| 12 | + index fingerprint: 1 | ||
| 13 | 13 | ||
| 14 | belongs_to :problem | 14 | belongs_to :problem |
| 15 | has_many :notices, :inverse_of => :err, :dependent => :destroy | 15 | has_many :notices, :inverse_of => :err, :dependent => :destroy |
app/models/notice.rb
| @@ -16,15 +16,9 @@ class Notice | @@ -16,15 +16,9 @@ class Notice | ||
| 16 | 16 | ||
| 17 | belongs_to :err | 17 | belongs_to :err |
| 18 | belongs_to :backtrace, :index => true | 18 | belongs_to :backtrace, :index => true |
| 19 | - index :created_at | ||
| 20 | - | ||
| 21 | - index( | ||
| 22 | - [ | ||
| 23 | - [ :err_id, Mongo::ASCENDING ], | ||
| 24 | - [ :created_at, Mongo::ASCENDING ], | ||
| 25 | - [ :_id, Mongo::ASCENDING ] | ||
| 26 | - ] | ||
| 27 | - ) | 19 | + |
| 20 | + index(:created_at => 1) | ||
| 21 | + index(:err_id => 1, :created_at => 1, :_id => 1) | ||
| 28 | 22 | ||
| 29 | after_create :cache_attributes_on_problem, :unresolve_problem | 23 | after_create :cache_attributes_on_problem, :unresolve_problem |
| 30 | after_create :email_notification | 24 | after_create :email_notification |
app/models/problem.rb
| @@ -26,14 +26,14 @@ class Problem | @@ -26,14 +26,14 @@ class Problem | ||
| 26 | field :hosts, :type => Hash, :default => {} | 26 | field :hosts, :type => Hash, :default => {} |
| 27 | field :comments_count, :type => Integer, :default => 0 | 27 | field :comments_count, :type => Integer, :default => 0 |
| 28 | 28 | ||
| 29 | - index :app_id | ||
| 30 | - index :app_name | ||
| 31 | - index :message | ||
| 32 | - index :last_notice_at | ||
| 33 | - index :first_notice_at | ||
| 34 | - index :last_deploy_at | ||
| 35 | - index :resolved_at | ||
| 36 | - index :notices_count | 29 | + index :app_id => 1 |
| 30 | + index :app_name => 1 | ||
| 31 | + index :message => 1 | ||
| 32 | + index :last_notice_at => 1 | ||
| 33 | + index :first_notice_at => 1 | ||
| 34 | + index :last_deploy_at => 1 | ||
| 35 | + index :resolved_at => 1 | ||
| 36 | + index :notices_count => 1 | ||
| 37 | 37 | ||
| 38 | belongs_to :app | 38 | belongs_to :app |
| 39 | has_many :errs, :inverse_of => :problem, :dependent => :destroy | 39 | has_many :errs, :inverse_of => :problem, :dependent => :destroy |
| @@ -51,9 +51,9 @@ class Problem | @@ -51,9 +51,9 @@ class Problem | ||
| 51 | validates_presence_of :last_notice_at, :first_notice_at | 51 | validates_presence_of :last_notice_at, :first_notice_at |
| 52 | 52 | ||
| 53 | 53 | ||
| 54 | - def self.all_else_unresolved all | ||
| 55 | - if all | ||
| 56 | - find(:all) | 54 | + def self.all_else_unresolved(fetch_all) |
| 55 | + if fetch_all | ||
| 56 | + all | ||
| 57 | else | 57 | else |
| 58 | where(:resolved => false) | 58 | where(:resolved => false) |
| 59 | end | 59 | end |
| @@ -132,8 +132,8 @@ class Problem | @@ -132,8 +132,8 @@ class Problem | ||
| 132 | self.last_deploy_at = if (last_deploy = app.deploys.where(:environment => self.environment).last) | 132 | self.last_deploy_at = if (last_deploy = app.deploys.where(:environment => self.environment).last) |
| 133 | last_deploy.created_at.utc | 133 | last_deploy.created_at.utc |
| 134 | end | 134 | end |
| 135 | - collection.update({'_id' => self.id}, | ||
| 136 | - {'$set' => {'app_name' => self.app_name, | 135 | + collection.find('_id' => self.id) |
| 136 | + .update({'$set' => {'app_name' => self.app_name, | ||
| 137 | 'last_deploy_at' => self.last_deploy_at.try(:utc)}}) | 137 | 'last_deploy_at' => self.last_deploy_at.try(:utc)}}) |
| 138 | end | 138 | end |
| 139 | end | 139 | end |
| @@ -153,7 +153,7 @@ class Problem | @@ -153,7 +153,7 @@ class Problem | ||
| 153 | end | 153 | end |
| 154 | 154 | ||
| 155 | def self.search(value) | 155 | def self.search(value) |
| 156 | - where.or(:error_class => /#{value}/i).or(:where => /#{value}/i).or(:message => /#{value}/i).or(:app_name => /#{value}/i).or(:environment => /#{value}/i) | 156 | + any_of({:error_class => /#{value}/i}, {:message => /#{value}/i}, {:app_name => /#{value}/i}, {:environment => /#{value}/i}) |
| 157 | end | 157 | end |
| 158 | 158 | ||
| 159 | private | 159 | private |
config/initializers/mongo.rb
| @@ -20,14 +20,22 @@ elsif ENV['HEROKU'] || ENV['USE_ENV'] | @@ -20,14 +20,22 @@ elsif ENV['HEROKU'] || ENV['USE_ENV'] | ||
| 20 | end | 20 | end |
| 21 | 21 | ||
| 22 | Mongoid.configure do |config| | 22 | Mongoid.configure do |config| |
| 23 | - config.master = Mongo::Connection.new( | ||
| 24 | - settings.host, | ||
| 25 | - settings.port | ||
| 26 | - ).db(database_name) | ||
| 27 | - config.master.authenticate(settings.user, settings.password) if settings.user | 23 | + |
| 24 | + hash = { | ||
| 25 | + sessions: { | ||
| 26 | + default: { | ||
| 27 | + database: database_name, | ||
| 28 | + hosts: [ "#{settings.host}:#{settings.port}" ] | ||
| 29 | + } | ||
| 30 | + }, | ||
| 31 | + options: { allow_dynamic_fields: false, use_activesupport_time_zone: true, identity_map_enabled: true } | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + if settings.user && settings.password | ||
| 35 | + hash[:sessions][:default][:username] = settings.user | ||
| 36 | + hash[:sessions][:default][:password] = settings.password | ||
| 37 | + end | ||
| 38 | + | ||
| 39 | + config.load_configuration(hash) | ||
| 28 | end | 40 | end |
| 29 | end | 41 | end |
| 30 | - | ||
| 31 | -Mongoid.allow_dynamic_fields = false | ||
| 32 | -Mongoid.use_activesupport_time_zone = true | ||
| 33 | -Mongoid.identity_map_enabled = true |
config/mongoid.example.yml
| @@ -7,29 +7,34 @@ | @@ -7,29 +7,34 @@ | ||
| 7 | # `cap deploy:setup` is ran the first time. Be sure | 7 | # `cap deploy:setup` is ran the first time. Be sure |
| 8 | # to place production specific settings there | 8 | # to place production specific settings there |
| 9 | 9 | ||
| 10 | -defaults: &defaults | ||
| 11 | - host: localhost | ||
| 12 | - identity_map_enabled: true | ||
| 13 | - | ||
| 14 | - # slaves: | ||
| 15 | - # - host: slave1.local | ||
| 16 | - # port: 27018 | ||
| 17 | - # - host: slave2.local | ||
| 18 | - # port: 27019 | ||
| 19 | - | ||
| 20 | development: | 10 | development: |
| 21 | - <<: *defaults | ||
| 22 | - database: errbit_development | 11 | + sessions: |
| 12 | + default: | ||
| 13 | + database: errbit_development | ||
| 14 | + hosts: | ||
| 15 | + - localhost:27017 | ||
| 16 | + options: | ||
| 17 | + identity_map_enabled: true | ||
| 18 | + use_utc: true | ||
| 23 | 19 | ||
| 24 | test: | 20 | test: |
| 25 | - <<: *defaults | ||
| 26 | - database: errbit_test | 21 | + sessions: |
| 22 | + default: | ||
| 23 | + hosts: | ||
| 24 | + - localhost:27017 | ||
| 25 | + database: errbit_test | ||
| 26 | + options: | ||
| 27 | + identity_map_enabled: true | ||
| 28 | + use_utc: true | ||
| 27 | 29 | ||
| 28 | # set these environment variables on your prod server | 30 | # set these environment variables on your prod server |
| 29 | production: | 31 | production: |
| 30 | - <<: *defaults | ||
| 31 | - host: <%= ENV['MONGOID_HOST'] %> | ||
| 32 | - port: <%= ENV['MONGOID_PORT'] %> | ||
| 33 | - username: <%= ENV['MONGOID_USERNAME'] %> | ||
| 34 | - password: <%= ENV['MONGOID_PASSWORD'] %> | ||
| 35 | - database: <%= ENV['MONGOID_DATABASE'] %> | 32 | + sessions: |
| 33 | + default: | ||
| 34 | + database: <%= ENV['MONGOID_DATABASE'] %> | ||
| 35 | + hosts: | ||
| 36 | + - <%=ENV["MONGOID_HOST"]%><%=ENV["MONGOID_PORT"]%> | ||
| 37 | + username: <%= ENV['MONGOID_USERNAME'] %> | ||
| 38 | + password: <%= ENV['MONGOID_PASSWORD'] %> | ||
| 39 | + options: | ||
| 40 | + identity_map_enabled: true |
db/migrate/20110422152027_move_notices_to_separate_collection.rb
| 1 | class MoveNoticesToSeparateCollection < Mongoid::Migration | 1 | class MoveNoticesToSeparateCollection < Mongoid::Migration |
| 2 | def self.up | 2 | def self.up |
| 3 | + errs_coll = connection["errs"] | ||
| 4 | + | ||
| 3 | # copy embedded Notices into a separate collection | 5 | # copy embedded Notices into a separate collection |
| 4 | - mongo_db = Err.db | ||
| 5 | - errs = mongo_db.collection("errs").find({ }, :fields => ["notices"]) | 6 | + errs = errs_coll.find.select(notices: 1) |
| 6 | errs.each do |err| | 7 | errs.each do |err| |
| 7 | next unless err['notices'] | 8 | next unless err['notices'] |
| 8 | 9 | ||
| @@ -18,7 +19,7 @@ class MoveNoticesToSeparateCollection < Mongoid::Migration | @@ -18,7 +19,7 @@ class MoveNoticesToSeparateCollection < Mongoid::Migration | ||
| 18 | e.notices.create!(notice) | 19 | e.notices.create!(notice) |
| 19 | end | 20 | end |
| 20 | e.app.update_attribute(:notify_on_errs, old_notify) | 21 | e.app.update_attribute(:notify_on_errs, old_notify) |
| 21 | - mongo_db.collection("errs").update({ "_id" => err['_id']}, { "$unset" => { "notices" => 1}}) | 22 | + errs_coll.find({ "_id" => err['_id']}).update({ "$unset" => { "notices" => 1}}) |
| 22 | end | 23 | end |
| 23 | Rake::Task["errbit:db:update_notices_count"].invoke | 24 | Rake::Task["errbit:db:update_notices_count"].invoke |
| 24 | Rake::Task["errbit:db:update_problem_attrs"].invoke | 25 | Rake::Task["errbit:db:update_problem_attrs"].invoke |
db/migrate/20120530005915_rename_klass_to_error_class.rb
| 1 | class RenameKlassToErrorClass < Mongoid::Migration | 1 | class RenameKlassToErrorClass < Mongoid::Migration |
| 2 | def self.up | 2 | def self.up |
| 3 | [Problem, Err, Notice].each do |model| | 3 | [Problem, Err, Notice].each do |model| |
| 4 | - model.collection.update({}, {'$rename' => {'klass' => 'error_class'}}, :multi => true, :safe => true) | 4 | + model.collection.find.update({'$rename' => {'klass' => 'error_class'}}, :multi => true, :safe => true) |
| 5 | end | 5 | end |
| 6 | end | 6 | end |
| 7 | 7 | ||
| 8 | def self.down | 8 | def self.down |
| 9 | [Problem, Err, Notice].each do |model| | 9 | [Problem, Err, Notice].each do |model| |
| 10 | - model.collection.update({}, {'$rename' => {'error_class' => 'klass'}}, :multi => true, :safe => true) | 10 | + model.collection.find.update({'$rename' => {'error_class' => 'klass'}}, :multi => true, :safe => true) |
| 11 | end | 11 | end |
| 12 | end | 12 | end |
| 13 | end | 13 | end |
db/migrate/20120603112130_change_github_url_to_github_repo.rb
| 1 | class ChangeGithubUrlToGithubRepo < Mongoid::Migration | 1 | class ChangeGithubUrlToGithubRepo < Mongoid::Migration |
| 2 | def self.up | 2 | def self.up |
| 3 | - App.collection.update({}, {'$rename' => {'github_url' => 'github_repo'}}, :multi => true, :safe => true) | 3 | + App.collection.find.update({'$rename' => {'github_url' => 'github_repo'}}, :multi => true, :safe => true) |
| 4 | App.all.each do |app| | 4 | App.all.each do |app| |
| 5 | app.send :normalize_github_repo | 5 | app.send :normalize_github_repo |
| 6 | app.save | 6 | app.save |
| @@ -8,7 +8,7 @@ class ChangeGithubUrlToGithubRepo < Mongoid::Migration | @@ -8,7 +8,7 @@ class ChangeGithubUrlToGithubRepo < Mongoid::Migration | ||
| 8 | end | 8 | end |
| 9 | 9 | ||
| 10 | def self.down | 10 | def self.down |
| 11 | - App.collection.update({}, {'$rename' => {'github_repo' => 'github_url'}}, :multi => true, :safe => true) | 11 | + App.collection.find.update({'$rename' => {'github_repo' => 'github_url'}}, :multi => true, :safe => true) |
| 12 | App.all.each do |app| | 12 | App.all.each do |app| |
| 13 | unless app.github_repo.include?("github.com") | 13 | unless app.github_repo.include?("github.com") |
| 14 | app.update_attribute :github_url, "https://github.com/" << app.github_url | 14 | app.update_attribute :github_url, "https://github.com/" << app.github_url |
db/seeds.rb
| @@ -12,12 +12,11 @@ puts "-- email: #{admin_email}" | @@ -12,12 +12,11 @@ puts "-- email: #{admin_email}" | ||
| 12 | puts "-- password: #{admin_pass}" | 12 | puts "-- password: #{admin_pass}" |
| 13 | puts "" | 13 | puts "" |
| 14 | puts "Be sure to change these credentials ASAP!" | 14 | puts "Be sure to change these credentials ASAP!" |
| 15 | -user = User.where(:email => admin_email).first || User.new({ | ||
| 16 | - :name => 'Errbit Admin', | ||
| 17 | - :email => admin_email, | ||
| 18 | - :password => admin_pass, | ||
| 19 | - :password_confirmation => admin_pass | ||
| 20 | -}) | 15 | +user = User.find_or_initialize_by(:email => admin_email) do |u| |
| 16 | + u.name = 'Errbit Admin' | ||
| 17 | + u.password = admin_pass | ||
| 18 | + u.password_confirmation = admin_pass | ||
| 19 | +end | ||
| 21 | user.username = admin_username if Errbit::Config.user_has_username | 20 | user.username = admin_username if Errbit::Config.user_has_username |
| 22 | 21 | ||
| 23 | user.admin = true | 22 | user.admin = true |
spec/controllers/api/v1/notices_controller_spec.rb
| @@ -9,10 +9,10 @@ describe Api::V1::NoticesController do | @@ -9,10 +9,10 @@ describe Api::V1::NoticesController do | ||
| 9 | 9 | ||
| 10 | describe "GET /api/v1/notices" do | 10 | describe "GET /api/v1/notices" do |
| 11 | before do | 11 | before do |
| 12 | - Fabricate(:notice, :created_at => DateTime.new(2012, 8, 01)) | ||
| 13 | - Fabricate(:notice, :created_at => DateTime.new(2012, 8, 01)) | ||
| 14 | - Fabricate(:notice, :created_at => DateTime.new(2012, 8, 21)) | ||
| 15 | - Fabricate(:notice, :created_at => DateTime.new(2012, 8, 30)) | 12 | + Fabricate(:notice, :created_at => Time.new(2012, 8, 01)) |
| 13 | + Fabricate(:notice, :created_at => Time.new(2012, 8, 01)) | ||
| 14 | + Fabricate(:notice, :created_at => Time.new(2012, 8, 21)) | ||
| 15 | + Fabricate(:notice, :created_at => Time.new(2012, 8, 30)) | ||
| 16 | end | 16 | end |
| 17 | 17 | ||
| 18 | it "should return JSON if JSON is requested" do | 18 | it "should return JSON if JSON is requested" do |
spec/controllers/apps_controller_spec.rb
| @@ -11,7 +11,7 @@ describe AppsController do | @@ -11,7 +11,7 @@ describe AppsController do | ||
| 11 | sign_in Fabricate(:admin) | 11 | sign_in Fabricate(:admin) |
| 12 | 3.times { Fabricate(:app) } | 12 | 3.times { Fabricate(:app) } |
| 13 | get :index | 13 | get :index |
| 14 | - controller.apps.should == App.all.sort.entries | 14 | + controller.apps.entries.should == App.all.sort.entries |
| 15 | end | 15 | end |
| 16 | end | 16 | end |
| 17 | 17 |
spec/controllers/problems_controller_spec.rb
| @@ -195,13 +195,13 @@ describe ProblemsController do | @@ -195,13 +195,13 @@ describe ProblemsController do | ||
| 195 | sign_in Fabricate(:admin) | 195 | sign_in Fabricate(:admin) |
| 196 | 196 | ||
| 197 | @problem = Fabricate(:err) | 197 | @problem = Fabricate(:err) |
| 198 | - App.stub(:find).with(@problem.app.id).and_return(@problem.app) | 198 | + App.stub(:find).with(@problem.app.id.to_s).and_return(@problem.app) |
| 199 | @problem.app.problems.stub(:find).and_return(@problem.problem) | 199 | @problem.app.problems.stub(:find).and_return(@problem.problem) |
| 200 | @problem.problem.stub(:resolve!) | 200 | @problem.problem.stub(:resolve!) |
| 201 | end | 201 | end |
| 202 | 202 | ||
| 203 | it 'finds the app and the problem' do | 203 | it 'finds the app and the problem' do |
| 204 | - App.should_receive(:find).with(@problem.app.id).and_return(@problem.app) | 204 | + App.should_receive(:find).with(@problem.app.id.to_s).and_return(@problem.app) |
| 205 | @problem.app.problems.should_receive(:find).and_return(@problem.problem) | 205 | @problem.app.problems.should_receive(:find).and_return(@problem.problem) |
| 206 | put :resolve, :app_id => @problem.app.id, :id => @problem.problem.id | 206 | put :resolve, :app_id => @problem.app.id, :id => @problem.problem.id |
| 207 | controller.app.should == @problem.app | 207 | controller.app.should == @problem.app |
spec/interactors/problem_destroy_spec.rb
| @@ -32,17 +32,17 @@ describe ProblemDestroy do | @@ -32,17 +32,17 @@ describe ProblemDestroy do | ||
| 32 | end | 32 | end |
| 33 | 33 | ||
| 34 | it 'delete all errs associate' do | 34 | it 'delete all errs associate' do |
| 35 | - Err.collection.should_receive(:remove).with(:_id => { '$in' => [err_1.id, err_2.id] }) | 35 | + Err.should_receive(:delete_all).with(:_id => { '$in' => [err_1.id, err_2.id] }) |
| 36 | problem_destroy.execute | 36 | problem_destroy.execute |
| 37 | end | 37 | end |
| 38 | 38 | ||
| 39 | it 'delete all comments associate' do | 39 | it 'delete all comments associate' do |
| 40 | - Comment.collection.should_receive(:remove).with(:_id => { '$in' => [comment_1.id, comment_2.id] }) | 40 | + Comment.should_receive(:delete_all).with(:_id => { '$in' => [comment_1.id, comment_2.id] }) |
| 41 | problem_destroy.execute | 41 | problem_destroy.execute |
| 42 | end | 42 | end |
| 43 | 43 | ||
| 44 | it 'delete all notice of associate to this errs' do | 44 | it 'delete all notice of associate to this errs' do |
| 45 | - Notice.collection.should_receive(:remove).with({:err_id => { '$in' => [err_1.id, err_2.id] }}) | 45 | + Notice.should_receive(:delete_all).with({:err_id => { '$in' => [err_1.id, err_2.id] }}) |
| 46 | problem_destroy.execute | 46 | problem_destroy.execute |
| 47 | end | 47 | end |
| 48 | end | 48 | end |
spec/interactors/problem_merge_spec.rb
| @@ -38,7 +38,7 @@ describe ProblemMerge do | @@ -38,7 +38,7 @@ describe ProblemMerge do | ||
| 38 | 38 | ||
| 39 | it 'move all err in one problem' do | 39 | it 'move all err in one problem' do |
| 40 | problem_merge.merge | 40 | problem_merge.merge |
| 41 | - problem.reload.errs.should eq (first_errs | merged_errs) | 41 | + expect(problem.reload.errs.map(&:id).sort).to eq (first_errs | merged_errs).map(&:id).sort |
| 42 | end | 42 | end |
| 43 | 43 | ||
| 44 | it 'update problem cache' do | 44 | it 'update problem cache' do |
spec/interactors/problem_updater_cache_spec.rb
| @@ -31,11 +31,11 @@ describe ProblemUpdaterCache do | @@ -31,11 +31,11 @@ describe ProblemUpdaterCache do | ||
| 31 | end | 31 | end |
| 32 | 32 | ||
| 33 | it 'update first_notice_at' do | 33 | it 'update first_notice_at' do |
| 34 | - expect(problem.first_notice_at).to eq notice.created_at | 34 | + expect(problem.first_notice_at).to eq notice.reload.created_at |
| 35 | end | 35 | end |
| 36 | 36 | ||
| 37 | it 'update last_notice_at' do | 37 | it 'update last_notice_at' do |
| 38 | - expect(problem.last_notice_at).to eq notice.created_at | 38 | + expect(problem.last_notice_at).to eq notice.reload.created_at |
| 39 | end | 39 | end |
| 40 | 40 | ||
| 41 | it 'update stats messages' do | 41 | it 'update stats messages' do |
spec/interactors/resolved_problem_clearer_spec.rb
| @@ -21,16 +21,16 @@ describe ResolvedProblemClearer do | @@ -21,16 +21,16 @@ describe ResolvedProblemClearer do | ||
| 21 | } | 21 | } |
| 22 | end | 22 | end |
| 23 | it 'not repair database' do | 23 | it 'not repair database' do |
| 24 | - Mongoid.config.master.should_receive(:command).and_call_original | ||
| 25 | - Mongoid.config.master.should_not_receive(:command).with({:repairDatabase => 1}) | 24 | + Mongoid.default_session.stub(:command).and_call_original |
| 25 | + Mongoid.default_session.should_not_receive(:command).with({:repairDatabase => 1}) | ||
| 26 | resolved_problem_clearer.execute | 26 | resolved_problem_clearer.execute |
| 27 | end | 27 | end |
| 28 | end | 28 | end |
| 29 | 29 | ||
| 30 | context "with problem resolve" do | 30 | context "with problem resolve" do |
| 31 | before do | 31 | before do |
| 32 | - Mongoid.config.master.stub(:command).and_call_original | ||
| 33 | - Mongoid.config.master.stub(:command).with({:repairDatabase => 1}) | 32 | + Mongoid.default_session.stub(:command).and_call_original |
| 33 | + Mongoid.default_session.stub(:command).with({:repairDatabase => 1}) | ||
| 34 | problems.first.resolve! | 34 | problems.first.resolve! |
| 35 | problems.second.resolve! | 35 | problems.second.resolve! |
| 36 | end | 36 | end |
| @@ -46,8 +46,8 @@ describe ResolvedProblemClearer do | @@ -46,8 +46,8 @@ describe ResolvedProblemClearer do | ||
| 46 | end | 46 | end |
| 47 | 47 | ||
| 48 | it 'repair database' do | 48 | it 'repair database' do |
| 49 | - Mongoid.config.master.should_receive(:command).and_call_original | ||
| 50 | - Mongoid.config.master.should_receive(:command).with({:repairDatabase => 1}) | 49 | + Mongoid.default_session.stub(:command).and_call_original |
| 50 | + Mongoid.default_session.should_receive(:command).with({:repairDatabase => 1}) | ||
| 51 | resolved_problem_clearer.execute | 51 | resolved_problem_clearer.execute |
| 52 | end | 52 | end |
| 53 | end | 53 | end |