Skip to content
Snippets Groups Projects
Commit adb31f09 authored by Alex Reisner's avatar Alex Reisner
Browse files

Move Geocoder::Model to separate file.

parent 0b3e1271
No related branches found
No related tags found
No related merge requests found
require "geocoder/configuration"
require "geocoder/calculations"
require "geocoder/cache"
require "geocoder/model"
require "geocoder/request"
module Geocoder
......
require 'geocoder'
module Geocoder
##
# Methods for invoking Geocoder in a model.
#
module Model
module Base
##
# Set attribute names and include the Geocoder module.
#
def geocoded_by(address_attr, options = {}, &block)
geocoder_init(
:geocode => true,
:user_address => address_attr,
:latitude => options[:latitude] || :latitude,
:longitude => options[:longitude] || :longitude,
:geocode_block => block
)
end
##
# Set attribute names and include the Geocoder module.
#
def reverse_geocoded_by(latitude_attr, longitude_attr, options = {}, &block)
geocoder_init(
:reverse_geocode => true,
:fetched_address => options[:address] || :address,
:latitude => latitude_attr,
:longitude => longitude_attr,
:reverse_block => block
)
end
def geocoder_options
@geocoder_options
end
private # ----------------------------------------------------------------
def geocoder_init(options)
unless geocoder_initialized?
@geocoder_options = {}
require "geocoder/orms/#{geocoder_file_name}"
include eval("Geocoder::Orm::" + geocoder_module_name)
end
@geocoder_options.merge! options
end
def geocoder_initialized?
begin
included_modules.include? eval("Geocoder::Orm::" + geocoder_module_name)
rescue NameError
false
end
end
end
module ActiveRecord
include Base
private
def geocoder_file_name; "active_record"; end
def geocoder_module_name; "ActiveRecord"; end
end
module Mongoid
include Base
private
def geocoder_file_name; "mongoid"; end
def geocoder_module_name; "Mongoid"; end
end
end
end
require 'geocoder'
require 'geocoder/model'
module Geocoder
if defined? Rails::Railtie
......@@ -17,63 +18,8 @@ module Geocoder
class Railtie
def self.insert
return unless defined?(::ActiveRecord)
::ActiveRecord::Base.extend(ModelMethods)
end
end
##
# Methods available in the model class before Geocoder is invoked.
#
module ModelMethods
##
# Set attribute names and include the Geocoder module.
#
def geocoded_by(address_attr, options = {}, &block)
geocoder_init(
:geocode => true,
:user_address => address_attr,
:latitude => options[:latitude] || :latitude,
:longitude => options[:longitude] || :longitude,
:geocode_block => block
)
end
##
# Set attribute names and include the Geocoder module.
#
def reverse_geocoded_by(latitude_attr, longitude_attr, options = {}, &block)
geocoder_init(
:reverse_geocode => true,
:fetched_address => options[:address] || :address,
:latitude => latitude_attr,
:longitude => longitude_attr,
:reverse_block => block
)
end
def geocoder_options
@geocoder_options
end
private # ----------------------------------------------------------------
def geocoder_init(options)
unless geocoder_initialized?
@geocoder_options = {}
require 'geocoder/orms/active_record'
include Geocoder::Orm::ActiveRecord
end
@geocoder_options.merge! options
end
def geocoder_initialized?
begin
included_modules.include? Geocoder::Orm::ActiveRecord
rescue NameError
false
if defined?(::ActiveRecord)
::ActiveRecord::Base.extend(Model::ActiveRecord)
end
end
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment