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

Clean up Railtie.

Move model class methods to separate module.
parent 2f9f7dfa
No related branches found
No related tags found
No related merge requests found
require 'geocoder' require 'geocoder'
require 'geocoder/orms/active_record'
module Geocoder module Geocoder
if defined? Rails::Railtie if defined? Rails::Railtie
...@@ -18,53 +17,60 @@ module Geocoder ...@@ -18,53 +17,60 @@ module Geocoder
class Railtie class Railtie
def self.insert def self.insert
return unless defined?(::ActiveRecord) return unless defined?(::ActiveRecord)
::ActiveRecord::Base.extend(ModelMethods)
end
end
## ##
# Add methods to ActiveRecord::Base so Geocoder is accessible by models. # Methods available in the model class before Geocoder is invoked.
# #
::ActiveRecord::Base.class_eval do module ModelMethods
## ##
# Set attribute names and include the Geocoder module. # Set attribute names and include the Geocoder module.
# #
def self.geocoded_by(address_attr, options = {}, &block) def geocoded_by(address_attr, options = {}, &block)
_geocoder_init( geocoder_init(
:user_address => address_attr, :user_address => address_attr,
:latitude => options[:latitude] || :latitude, :latitude => options[:latitude] || :latitude,
:longitude => options[:longitude] || :longitude, :longitude => options[:longitude] || :longitude,
:block => block :block => block
) )
end end
## ##
# Set attribute names and include the Geocoder module. # Set attribute names and include the Geocoder module.
# #
def self.reverse_geocoded_by(latitude_attr, longitude_attr, options = {}) def reverse_geocoded_by(latitude_attr, longitude_attr, options = {})
_geocoder_init( geocoder_init(
:fetched_address => options[:address] || :address, :fetched_address => options[:address] || :address,
:latitude => latitude_attr, :latitude => latitude_attr,
:longitude => longitude_attr :longitude => longitude_attr
) )
end end
def self._geocoder_init(options) def geocoder_options
unless _geocoder_initialized? @geocoder_options
class_inheritable_reader :geocoder_options end
class_inheritable_hash_writer :geocoder_options
end
self.geocoder_options = options
unless _geocoder_initialized?
include Geocoder::Orm::ActiveRecord
end
end
def self._geocoder_initialized?
included_modules.include? Geocoder::Orm::ActiveRecord private # ----------------------------------------------------------------
end
def geocoder_init(options)
unless geocoder_initialized?
@geocoder_options = options
require 'geocoder/orms/active_record'
include Geocoder::Orm::ActiveRecord
end end
end
def geocoder_initialized?
begin
included_modules.include? Geocoder::Orm::ActiveRecord
rescue NameError
false
end
end end
end 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