0
votes

I'm new to Mongo. I've installed Mongodb from this source. I'm using the mongodb for Rails application. The app loads fine after starting the mongodb and rails. However, it fails when I try to login. The same thing happens when I try to perform some operations in rails console.

Here the model code:

  def self.authenticate(email, password)
    user = find(:first, :conditions => {:email => email})
    if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
      user
    else
     nil
    end
  end

Its failing at if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)

Here is the short error:

Database command 'create' failed: {"ok"=>0.0, "errmsg"=>"collection already exists", "code"=>48}

And, the full application error trace:

mongo (1.3.1) lib/mongo/db.rb:506:in command' mongo (1.3.1) lib/mongo/db.rb:284:increate_collection' mongoid (2.2.1) lib/mongoid/collections/master.rb:41:in initialize' mongoid (2.2.1) lib/mongoid/collection.rb:127:innew' mongoid (2.2.1) lib/mongoid/collection.rb:127:in master' mongoid (2.2.1) lib/mongoid/collection.rb:60:infind_one' mongoid (2.2.1) lib/mongoid/contexts/mongo.rb:164:in first' mongoid (2.2.1) lib/mongoid/criteria.rb:42:inone' mongoid (2.2.1) lib/mongoid/criterion/inclusion.rb:104:in find' mongoid (2.2.1) lib/mongoid/finders.rb:83:infind' actionpack (3.0.3) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (3.0.3) lib/abstract_controller/base.rb:151:inprocess_action' actionpack (3.0.3) lib/action_controller/metal/rendering.rb:11:in process_action' actionpack (3.0.3) lib/abstract_controller/callbacks.rb:18:inblock in process_action' activesupport (3.0.3) lib/active_support/callbacks.rb:435:in _run__902337259577170033__process_action__4476240526817474042__callbacks' activesupport (3.0.3) lib/active_support/callbacks.rb:409:in_run_process_action_callbacks' activesupport (3.0.3) lib/active_support/callbacks.rb:93:in run_callbacks' actionpack (3.0.3) lib/abstract_controller/callbacks.rb:17:inprocess_action' actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:30:in block in process_action' activesupport (3.0.3) lib/active_support/notifications.rb:52:inblock in instrument' activesupport (3.0.3) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (3.0.3) lib/active_support/notifications.rb:52:ininstrument' actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:29:in process_action' actionpack (3.0.3) lib/action_controller/metal/rescue.rb:17:inprocess_action' actionpack (3.0.3) lib/abstract_controller/base.rb:120:in process' actionpack (3.0.3) lib/abstract_controller/rendering.rb:40:inprocess' actionpack (3.0.3) lib/action_controller/metal.rb:138:in dispatch' actionpack (3.0.3) lib/action_controller/metal/rack_delegation.rb:14:indispatch' actionpack (3.0.3) lib/action_controller/metal.rb:178:in block in action' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:incall' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:in dispatch' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:27:incall' rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:in block in call' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:inblock in recognize' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:75:in optimized_each' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:inrecognize' rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:in call' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:492:incall' mongoid (2.2.1) lib/rack/mongoid/middleware/identity_map.rb:33:in block in call' mongoid (2.2.1) lib/mongoid.rb:130:inunit_of_work' mongoid (2.2.1) lib/rack/mongoid/middleware/identity_map.rb:33:in call' actionpack (3.0.3) lib/action_dispatch/middleware/best_standards_support.rb:17:incall' actionpack (3.0.3) lib/action_dispatch/middleware/head.rb:14:in call' rack (1.2.4) lib/rack/methodoverride.rb:24:incall' actionpack (3.0.3) lib/action_dispatch/middleware/params_parser.rb:21:in call' actionpack (3.0.3) lib/action_dispatch/middleware/flash.rb:182:incall' actionpack (3.0.3) lib/action_dispatch/middleware/session/abstract_store.rb:149:in call' actionpack (3.0.3) lib/action_dispatch/middleware/cookies.rb:295:incall' actionpack (3.0.3) lib/action_dispatch/middleware/callbacks.rb:46:in block in call' activesupport (3.0.3) lib/active_support/callbacks.rb:415:in_run_call_callbacks' actionpack (3.0.3) lib/action_dispatch/middleware/callbacks.rb:44:in call' rack (1.2.4) lib/rack/sendfile.rb:106:incall' actionpack (3.0.3) lib/action_dispatch/middleware/remote_ip.rb:48:in call' actionpack (3.0.3) lib/action_dispatch/middleware/show_exceptions.rb:46:incall' railties (3.0.3) lib/rails/rack/logger.rb:13:in call' rack (1.2.4) lib/rack/runtime.rb:17:incall' activesupport (3.0.3) lib/active_support/cache/strategy/local_cache.rb:72:in call' rack (1.2.4) lib/rack/lock.rb:11:inblock in call' rack (1.2.4) lib/rack/lock.rb:11:in synchronize' rack (1.2.4) lib/rack/lock.rb:11:incall' actionpack (3.0.3) lib/action_dispatch/middleware/static.rb:30:in call' railties (3.0.3) lib/rails/application.rb:168:incall' railties (3.0.3) lib/rails/application.rb:77:in method_missing' railties (3.0.3) lib/rails/rack/log_tailer.rb:14:incall' rack (1.2.4) lib/rack/content_length.rb:13:in call' rack (1.2.4) lib/rack/handler/webrick.rb:52:inservice' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/httpserver.rb:138:in service' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/httpserver.rb:94:inrun' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

Any help is highly appreciated.

1
Can you show model and code? - Harry Bomrah
@HarryBomrah I've added the model code - raghu

1 Answers

0
votes

After checking the code and googling I found that a special character was sent in every request. My request parameters were like this:

{  
   "utf8"=>"✓",
   "authenticity_token"=>"cAcdDOzfBgalF5em+97mTKw9DAjymfmEmG6hc+dDqhQ=",
   "email"=>"[email protected]",
   "password"=>"[FILTERED]",
   "commit"=>"Login"
}

Not sure what triggered 'âœ'. But one of the post in google says, there is a bug related to this present in the 2.2 series and that is got fixed with later versions.

So, I found my mongoid version to be 2.2.1 and once I had it upgraded the problem got resolved.

NOTE: Am new to mongoid and gave a solution with minimal knowledge. Please add details if needed.