whereabouts 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.6.1
@@ -6,7 +6,7 @@ module Whereabouts
6
6
  # type of Address. Defaults to the parent class.
7
7
  def has_whereabouts klass=:address, options={}
8
8
  # extend Address with class name if not defined.
9
- unless Object.const_defined?(klass.to_s.camelize) || klass == :address
9
+ unless klass == :address || Object.const_defined?(klass.to_s.camelize)
10
10
  create_address_class(klass.to_s.camelize)
11
11
  end
12
12
 
@@ -17,43 +17,61 @@ module Whereabouts
17
17
  # Define a singleton on the class that returns an array
18
18
  # that includes the address fields to validate presence of
19
19
  # or an empty array
20
- validate_singleton = "#{klass.to_s}_whereabouts_validate_fields".to_sym
21
20
  if options[:validate] && options[:validate].is_a?(Array)
22
- set_validators(klass, options[:validate])
23
- define_singleton_method validate_singleton do options[:validate] end
21
+ validators = options[:validate]
22
+ set_validators(klass, validators)
24
23
  else
25
- define_singleton_method validate_singleton do [] end
24
+ validators = []
26
25
  end
26
+ define_singleton_method validate_singleton_for(klass) do validators end
27
27
 
28
28
  # Check for geocode in options and confirm geocoder is defined.
29
29
  # Also defines a singleton to return a boolean about geocoding.
30
- geocode_singleton = "#{klass.to_s}_whereabouts_geocode?".to_sym
31
30
  if options[:geocode] && options[:geocode] == true && defined?(Geocoder)
31
+ geocode = true
32
32
  set_geocoding(klass)
33
- define_singleton_method geocode_singleton do true end
34
33
  else
35
- define_singleton_method geocode_singleton do false end
34
+ geocode = false
36
35
  end
36
+ define_singleton_method geocode_singleton_for(klass) do geocode end
37
37
  end
38
38
 
39
+ private
40
+ # Accepts a symbol defining the class and
41
+ # returns a symbol to define a singleton
42
+ # on the class like :address_whereabouts_geocode?
43
+ def geocode_singleton_for klass
44
+ "#{klass.to_s}_whereabouts_geocode?".to_sym
45
+ end
46
+
47
+ # Accepts a symbol defining the class and
48
+ # returns a symbol to define a singleton
49
+ # on the class like :address_whereabouts_validate_fields
50
+ def validate_singleton_for klass
51
+ "#{klass.to_s}_whereabouts_validate_fields".to_sym
52
+ end
53
+
39
54
  # Sets validates_presence_of fields for the Address based on the
40
55
  # singleton method created on the Address addressable_type class.
41
- private
42
56
  def set_validators klass, fields=[]
43
- _single = "#{klass.to_s}_whereabouts_validate_fields".to_sym
57
+ _single = validate_singleton_for(klass)
44
58
  klass.to_s.camelize.constantize.class_eval do
45
59
  fields.each do |f|
46
- validates_presence_of f, :if => lambda {|a| a.addressable_type.constantize.send(_single).include?(f)}
60
+ validates_presence_of f,
61
+ :if => lambda {|a| a.addressable_type.constantize.send(_single).include?(f)}
47
62
  end
48
63
  end
49
64
  end
50
65
 
51
- # If defined, geocode the address.
66
+ # Geocode the address using Address#geocode_address if the
67
+ # geocode_singleton is true and the record is either new or
68
+ # has been updated.
52
69
  def set_geocoding klass
53
- _single = "#{klass.to_s}_whereabouts_geocode?".to_sym
70
+ _single = geocode_singleton_for(klass)
54
71
  klass.to_s.camelize.constantize.class_eval do
55
72
  geocoded_by :geocode_address
56
- after_validation :geocode, :if => lambda {|a| a.addressable_type.constantize.send(_single) && (a.new_record? || a.changed?)}
73
+ after_validation :geocode,
74
+ :if => lambda {|a| a.addressable_type.constantize.send(_single) && (a.new_record? || a.changed?)}
57
75
  end
58
76
  end
59
77
 
@@ -65,7 +83,7 @@ module Whereabouts
65
83
  end
66
84
  end
67
85
  end
68
- # Include the modules into ActiveRecord::Base
86
+ # Include the module into ActiveRecord::Base
69
87
  class ActiveRecord::Base
70
88
  include Whereabouts
71
89
  end
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
4
  require 'active_record'
5
+ require 'active_support'
5
6
  require 'whereabouts_methods'
6
7
 
7
8
  # Requires supporting files with custom matchers and macros, etc,
data/whereabouts.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{whereabouts}
8
- s.version = "0.6.0"
7
+ s.name = "whereabouts"
8
+ s.version = "0.6.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Nicholas Fine}]
12
- s.date = %q{2011-12-02}
13
- s.description = %q{Rails plugin for adding associated addresses to Active Record Models}
14
- s.email = %q{nicholas.fine@gmail.com}
11
+ s.authors = ["Nicholas Fine"]
12
+ s.date = "2011-12-02"
13
+ s.description = "Rails plugin for adding associated addresses to Active Record Models"
14
+ s.email = "nicholas.fine@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "README.markdown"
17
17
  ]
@@ -33,11 +33,11 @@ Gem::Specification.new do |s|
33
33
  "spec/whereabouts_spec.rb",
34
34
  "whereabouts.gemspec"
35
35
  ]
36
- s.homepage = %q{http://github.com/yrgoldteeth/whereabouts}
37
- s.licenses = [%q{MIT}]
38
- s.require_paths = [%q{lib}]
39
- s.rubygems_version = %q{1.8.6}
40
- s.summary = %q{Whereabouts - has_whereabouts :address}
36
+ s.homepage = "http://github.com/yrgoldteeth/whereabouts"
37
+ s.licenses = ["MIT"]
38
+ s.require_paths = ["lib"]
39
+ s.rubygems_version = "1.8.10"
40
+ s.summary = "Whereabouts - has_whereabouts :address"
41
41
 
42
42
  if s.respond_to? :specification_version then
43
43
  s.specification_version = 3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whereabouts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-02 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &19837800 !ruby/object:Gem::Requirement
16
+ requirement: &84930190 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *19837800
24
+ version_requirements: *84930190
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &19837140 !ruby/object:Gem::Requirement
27
+ requirement: &84929890 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *19837140
35
+ version_requirements: *84929890
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &19836420 !ruby/object:Gem::Requirement
38
+ requirement: &84929590 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.3.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *19836420
46
+ version_requirements: *84929590
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &19835600 !ruby/object:Gem::Requirement
49
+ requirement: &84929300 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *19835600
57
+ version_requirements: *84929300
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &19834880 !ruby/object:Gem::Requirement
60
+ requirement: &84929000 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.2
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *19834880
68
+ version_requirements: *84929000
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
- requirement: &19834160 !ruby/object:Gem::Requirement
71
+ requirement: &84928710 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *19834160
79
+ version_requirements: *84928710
80
80
  description: Rails plugin for adding associated addresses to Active Record Models
81
81
  email: nicholas.fine@gmail.com
82
82
  executables: []
@@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  segments:
117
117
  - 0
118
- hash: 46287067526210080
118
+ hash: 282947055
119
119
  required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  none: false
121
121
  requirements:
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  version: '0'
125
125
  requirements: []
126
126
  rubyforge_project:
127
- rubygems_version: 1.8.6
127
+ rubygems_version: 1.8.10
128
128
  signing_key:
129
129
  specification_version: 3
130
130
  summary: Whereabouts - has_whereabouts :address