From cfc14f1ddc0b451dbfdd5994e5672b2f1b11e0a8 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Sun, 22 Jun 2008 15:22:13 +0000 Subject: [PATCH 1/1] Make GeoRecord inject class methods correctly when included. --- lib/geo_record.rb | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/geo_record.rb b/lib/geo_record.rb index d5604d4d3..025bbe4a8 100644 --- a/lib/geo_record.rb +++ b/lib/geo_record.rb @@ -1,4 +1,8 @@ module GeoRecord + def self.included(base) + base.extend(ClassMethods) + end + def before_save self.update_tile end @@ -11,12 +15,6 @@ module GeoRecord return true end - def self.find_by_area(minlat, minlon, maxlat, maxlon, options) - self.with_scope(:find => {:conditions => OSM.sql_for_area(minlat, minlon, maxlat, maxlon)}) do - return self.find(:all, options) - end - end - def update_tile self.tile = QuadTile.tile_for_point(lat, lon) end @@ -48,11 +46,18 @@ module GeoRecord -(lat2y(self.lat)-basey)*masterscale end - private +private def lat2y(a) 180/Math::PI * Math.log(Math.tan(Math::PI/4+a*(Math::PI/180)/2)) end + module ClassMethods + def find_by_area(minlat, minlon, maxlat, maxlon, options) + self.with_scope(:find => {:conditions => OSM.sql_for_area(minlat, minlon, maxlat, maxlon)}) do + return self.find(:all, options) + end + end + end end -- 2.43.2