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 +1 -1
- data/lib/whereabouts_methods.rb +33 -15
- data/spec/spec_helper.rb +1 -0
- data/whereabouts.gemspec +11 -11
- metadata +15 -15
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.1
|
data/lib/whereabouts_methods.rb
CHANGED
@@ -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)
|
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
|
-
|
23
|
-
|
21
|
+
validators = options[:validate]
|
22
|
+
set_validators(klass, validators)
|
24
23
|
else
|
25
|
-
|
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
|
-
|
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 =
|
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,
|
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
|
-
#
|
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 =
|
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,
|
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
|
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 =
|
8
|
-
s.version = "0.6.
|
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 = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
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 =
|
37
|
-
s.licenses = [
|
38
|
-
s.require_paths = [
|
39
|
-
s.rubygems_version =
|
40
|
-
s.summary =
|
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *84930190
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
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: *
|
35
|
+
version_requirements: *84929890
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
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: *
|
46
|
+
version_requirements: *84929590
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
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: *
|
57
|
+
version_requirements: *84929300
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
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: *
|
68
|
+
version_requirements: *84929000
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sqlite3
|
71
|
-
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: *
|
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:
|
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.
|
127
|
+
rubygems_version: 1.8.10
|
128
128
|
signing_key:
|
129
129
|
specification_version: 3
|
130
130
|
summary: Whereabouts - has_whereabouts :address
|