whereabouts 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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