diff --git a/lib/geocoder/models/mongoid.rb b/lib/geocoder/models/mongoid.rb index a7124e5bfd0681c36de543f90d96f52911c096c0..9e0b9fd832127dcf2439a06786d78658d7fc9e40 100644 --- a/lib/geocoder/models/mongoid.rb +++ b/lib/geocoder/models/mongoid.rb @@ -17,8 +17,14 @@ module Geocoder def geocoder_init(options) super(options) if options[:skip_index] == false - index [[ geocoder_options[:coordinates], Mongo::GEO2D ]], - :min => -180, :max => 180 # create 2d index + # create 2d index + if (::Mongoid::VERSION >= "3") + index({ geocoder_options[:coordinates].to_sym => '2d' }, + {:min => -180, :max => 180}) + else + index [[ geocoder_options[:coordinates], '2d' ]], + :min => -180, :max => 180 + end end end end diff --git a/test/mongoid_test.rb b/test/mongoid_test.rb index 0cc6b93a40b1ae9727d65a95c6dee88b43450339..1af5e9cd56e64d617b0e0fcee676de9b14925e16 100644 --- a/test/mongoid_test.rb +++ b/test/mongoid_test.rb @@ -17,7 +17,8 @@ class MongoidTest < Test::Unit::TestCase def test_custom_coordinate_field_near_scope location = [40.750354, -73.993371] p = Place.near(location) - assert_equal p.selector[:location]['$nearSphere'], location.reverse + key = Mongoid::VERSION >= "3" ? "location" : :location + assert_equal p.selector[key]['$nearSphere'], location.reverse end def test_model_configuration diff --git a/test/mongoid_test_helper.rb b/test/mongoid_test_helper.rb index 572db2b985bfb12bd0861845f3df088cb5cf5680..cf37bb01c236fb9b6df27b81f39bcbed5884e1a2 100644 --- a/test/mongoid_test_helper.rb +++ b/test/mongoid_test_helper.rb @@ -7,8 +7,12 @@ require 'geocoder/models/mongoid' $LOAD_PATH.unshift(File.dirname(__FILE__)) $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) -Mongoid.configure do |config| - config.logger = Logger.new($stderr, :debug) +if (::Mongoid::VERSION >= "3") + Mongoid.logger = Logger.new($stderr, :debug) +else + Mongoid.configure do |config| + config.logger = Logger.new($stderr, :debug) + end end ##