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 +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
|