rails-geocoder 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  Per-release changes to Geocoder.
4
4
 
5
+ == 0.9.2 (2010 Jun 3)
6
+
7
+ * Fix LIMIT clause bug in PostgreSQL (reported by kenzie).
8
+
5
9
  == 0.9.1 (2010 May 4)
6
10
 
7
11
  * Use scope instead of named_scope in Rails 3.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.1
1
+ 0.9.2
data/lib/geocoder.rb CHANGED
@@ -51,7 +51,7 @@ module Geocoder
51
51
  #
52
52
  # +order+ :: column(s) for ORDER BY SQL clause
53
53
  # +limit+ :: number of records to return (for LIMIT SQL clause)
54
- # +offset+ :: number of records to skip (for LIMIT SQL clause)
54
+ # +offset+ :: number of records to skip (for OFFSET SQL clause)
55
55
  #
56
56
  def near_scope_options(latitude, longitude, radius = 20, options = {})
57
57
  if ActiveRecord::Base.connection.adapter_name == "SQLite"
@@ -81,15 +81,13 @@ module Geocoder
81
81
  "COS(#{lat_attr} * PI() / 180) * " +
82
82
  "POWER(SIN((#{longitude} - #{lon_attr}) * " +
83
83
  "PI() / 180 / 2), 2) ))"
84
- {
84
+ default_near_scope_options(latitude, longitude, radius, options).merge(
85
85
  :select => "*, #{distance} AS distance",
86
86
  :conditions => \
87
87
  ["#{lat_attr} BETWEEN ? AND ? AND #{lon_attr} BETWEEN ? AND ?"] +
88
88
  coordinate_bounds(latitude, longitude, radius),
89
- :having => "#{distance} <= #{radius}",
90
- :order => options[:order],
91
- :limit => limit_clause(options)
92
- }
89
+ :having => "#{distance} <= #{radius}"
90
+ )
93
91
  end
94
92
 
95
93
  ##
@@ -101,12 +99,21 @@ module Geocoder
101
99
  def approx_near_scope_options(latitude, longitude, radius, options)
102
100
  lat_attr = geocoder_options[:latitude]
103
101
  lon_attr = geocoder_options[:longitude]
104
- {
102
+ default_near_scope_options(latitude, longitude, radius, options).merge(
105
103
  :conditions => \
106
104
  ["#{lat_attr} BETWEEN ? AND ? AND #{lon_attr} BETWEEN ? AND ?"] +
107
- coordinate_bounds(latitude, longitude, radius),
105
+ coordinate_bounds(latitude, longitude, radius)
106
+ )
107
+ end
108
+
109
+ ##
110
+ # Options used for any near-like scope.
111
+ #
112
+ def default_near_scope_options(latitude, longitude, radius, options)
113
+ {
108
114
  :order => options[:order],
109
- :limit => limit_clause(options)
115
+ :limit => options[:limit],
116
+ :offset => options[:offset]
110
117
  }
111
118
  end
112
119
 
@@ -125,16 +132,6 @@ module Geocoder
125
132
  longitude + (radius / factor)
126
133
  ]
127
134
  end
128
-
129
- ##
130
- # Build the limit clause for a query based on the same options hash
131
- # passed to the x_near_scope_options methods.
132
- #
133
- def limit_clause(options)
134
- if options[:limit] or options[:offset]
135
- "#{options[:offset].to_i},#{options[:limit].to_i}"
136
- end
137
- end
138
135
  end
139
136
 
140
137
  ##
@@ -335,7 +332,11 @@ module Geocoder
335
332
  # Name of the ActiveRecord scope method.
336
333
  #
337
334
  def self.scope_method_name
338
- Rails.version.starts_with?("3") ? :scope : :named_scope
335
+ begin
336
+ Rails.version.starts_with?("3") ? :scope : :named_scope
337
+ rescue NameError
338
+ :named_scope
339
+ end
339
340
  end
340
341
  end
341
342
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rails-geocoder}
8
- s.version = "0.9.1"
8
+ s.version = "0.9.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alex Reisner"]
12
- s.date = %q{2010-05-04}
12
+ s.date = %q{2010-06-03}
13
13
  s.description = %q{Geocoder adds object geocoding and database-agnostic distance calculations to Ruby on Rails. It does not rely on proprietary database functions so finding geocoded objects in a given area is easily done using out-of-the-box MySQL or even SQLite.}
14
14
  s.email = %q{alex@alexreisner.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 9
8
- - 1
9
- version: 0.9.1
8
+ - 2
9
+ version: 0.9.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Alex Reisner
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-04 00:00:00 -04:00
17
+ date: 2010-06-03 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies: []
20
20