whereabouts 0.5.4 → 0.6.0
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/Gemfile +1 -1
- data/VERSION +1 -1
- data/lib/whereabouts_methods.rb +58 -63
- data/whereabouts.gemspec +9 -9
- metadata +62 -70
data/Gemfile
CHANGED
@@ -3,6 +3,7 @@ source 'http://rubygems.org'
|
|
3
3
|
# Example:
|
4
4
|
# gem 'activesupport', '>= 2.3.5'
|
5
5
|
gem 'activerecord', '>= 3.0.0'
|
6
|
+
gem 'activesupport', '>= 3.0.0'
|
6
7
|
|
7
8
|
# Add dependencies to develop your gem here.
|
8
9
|
# Include everything needed to run rake, tests, features, etc.
|
@@ -10,6 +11,5 @@ group :development do
|
|
10
11
|
gem 'rspec', '~> 2.3.0'
|
11
12
|
gem 'bundler', '~> 1.0.0'
|
12
13
|
gem 'jeweler', '~> 1.6.2'
|
13
|
-
gem 'rcov', '>= 0'
|
14
14
|
gem 'sqlite3'
|
15
15
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/whereabouts_methods.rb
CHANGED
@@ -1,76 +1,71 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
module Whereabouts
|
1
|
+
module Whereabouts
|
2
|
+
extend ActiveSupport::Concern
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
module ClassMethods
|
5
|
+
# Accepts a symbol that will define the inherited
|
6
|
+
# type of Address. Defaults to the parent class.
|
7
|
+
def has_whereabouts klass=:address, options={}
|
8
|
+
# extend Address with class name if not defined.
|
9
|
+
unless Object.const_defined?(klass.to_s.camelize) || klass == :address
|
10
|
+
create_address_class(klass.to_s.camelize)
|
8
11
|
end
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def has_whereabouts klass=:address, options={}
|
14
|
-
# extend Address with class name if not defined.
|
15
|
-
unless Object.const_defined?(klass.to_s.camelize) || klass == :address
|
16
|
-
create_address_class(klass.to_s.camelize)
|
17
|
-
end
|
18
|
-
|
19
|
-
# Set the has_one relationship and accepts_nested_attributes_for.
|
20
|
-
has_one klass, :as => :addressable, :dependent => :destroy
|
21
|
-
accepts_nested_attributes_for klass
|
13
|
+
# Set the has_one relationship and accepts_nested_attributes_for.
|
14
|
+
has_one klass, :as => :addressable, :dependent => :destroy
|
15
|
+
accepts_nested_attributes_for klass
|
22
16
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
# Check for geocode in options and confirm geocoder is defined.
|
35
|
-
# Also defines a singleton to return a boolean about geocoding.
|
36
|
-
geocode_singleton = "#{klass.to_s}_whereabouts_geocode?".to_sym
|
37
|
-
if options[:geocode] && options[:geocode] == true && defined?(Geocoder)
|
38
|
-
set_geocoding(klass)
|
39
|
-
define_singleton_method geocode_singleton do true end
|
40
|
-
else
|
41
|
-
define_singleton_method geocode_singleton do false end
|
42
|
-
end
|
43
|
-
end
|
17
|
+
# Define a singleton on the class that returns an array
|
18
|
+
# that includes the address fields to validate presence of
|
19
|
+
# or an empty array
|
20
|
+
validate_singleton = "#{klass.to_s}_whereabouts_validate_fields".to_sym
|
21
|
+
if options[:validate] && options[:validate].is_a?(Array)
|
22
|
+
set_validators(klass, options[:validate])
|
23
|
+
define_singleton_method validate_singleton do options[:validate] end
|
24
|
+
else
|
25
|
+
define_singleton_method validate_singleton do [] end
|
26
|
+
end
|
44
27
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
28
|
+
# Check for geocode in options and confirm geocoder is defined.
|
29
|
+
# Also defines a singleton to return a boolean about geocoding.
|
30
|
+
geocode_singleton = "#{klass.to_s}_whereabouts_geocode?".to_sym
|
31
|
+
if options[:geocode] && options[:geocode] == true && defined?(Geocoder)
|
32
|
+
set_geocoding(klass)
|
33
|
+
define_singleton_method geocode_singleton do true end
|
34
|
+
else
|
35
|
+
define_singleton_method geocode_singleton do false end
|
36
|
+
end
|
37
|
+
end
|
55
38
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
39
|
+
# Sets validates_presence_of fields for the Address based on the
|
40
|
+
# singleton method created on the Address addressable_type class.
|
41
|
+
private
|
42
|
+
def set_validators klass, fields=[]
|
43
|
+
_single = "#{klass.to_s}_whereabouts_validate_fields".to_sym
|
44
|
+
klass.to_s.camelize.constantize.class_eval do
|
45
|
+
fields.each do |f|
|
46
|
+
validates_presence_of f, :if => lambda {|a| a.addressable_type.constantize.send(_single).include?(f)}
|
63
47
|
end
|
48
|
+
end
|
49
|
+
end
|
64
50
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
51
|
+
# If defined, geocode the address.
|
52
|
+
def set_geocoding klass
|
53
|
+
_single = "#{klass.to_s}_whereabouts_geocode?".to_sym
|
54
|
+
klass.to_s.camelize.constantize.class_eval do
|
55
|
+
geocoded_by :geocode_address
|
56
|
+
after_validation :geocode, :if => lambda {|a| a.addressable_type.constantize.send(_single) && (a.new_record? || a.changed?)}
|
71
57
|
end
|
72
58
|
end
|
59
|
+
|
60
|
+
# Generate a new class using Address as the superclass.
|
61
|
+
# Accepts a string defining the inherited type.
|
62
|
+
def create_address_class(class_name, &block)
|
63
|
+
klass = Class.new Address, &block
|
64
|
+
Object.const_set class_name, klass
|
65
|
+
end
|
73
66
|
end
|
74
67
|
end
|
75
68
|
# Include the modules into ActiveRecord::Base
|
76
|
-
ActiveRecord::Base
|
69
|
+
class ActiveRecord::Base
|
70
|
+
include Whereabouts
|
71
|
+
end
|
data/whereabouts.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{whereabouts}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.6.0"
|
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 = %q{2011-
|
11
|
+
s.authors = [%q{Nicholas Fine}]
|
12
|
+
s.date = %q{2011-12-02}
|
13
13
|
s.description = %q{Rails plugin for adding associated addresses to Active Record Models}
|
14
14
|
s.email = %q{nicholas.fine@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -34,9 +34,9 @@ Gem::Specification.new do |s|
|
|
34
34
|
"whereabouts.gemspec"
|
35
35
|
]
|
36
36
|
s.homepage = %q{http://github.com/yrgoldteeth/whereabouts}
|
37
|
-
s.licenses = [
|
38
|
-
s.require_paths = [
|
39
|
-
s.rubygems_version = %q{1.6
|
37
|
+
s.licenses = [%q{MIT}]
|
38
|
+
s.require_paths = [%q{lib}]
|
39
|
+
s.rubygems_version = %q{1.8.6}
|
40
40
|
s.summary = %q{Whereabouts - has_whereabouts :address}
|
41
41
|
|
42
42
|
if s.respond_to? :specification_version then
|
@@ -44,25 +44,25 @@ Gem::Specification.new do |s|
|
|
44
44
|
|
45
45
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
46
|
s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0"])
|
47
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0"])
|
47
48
|
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
48
49
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
49
50
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
|
50
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
51
51
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
52
52
|
else
|
53
53
|
s.add_dependency(%q<activerecord>, [">= 3.0.0"])
|
54
|
+
s.add_dependency(%q<activesupport>, [">= 3.0.0"])
|
54
55
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
55
56
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
56
57
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
57
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
58
58
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
59
59
|
end
|
60
60
|
else
|
61
61
|
s.add_dependency(%q<activerecord>, [">= 3.0.0"])
|
62
|
+
s.add_dependency(%q<activesupport>, [">= 3.0.0"])
|
62
63
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
63
64
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
64
65
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
65
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
66
66
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
67
67
|
end
|
68
68
|
end
|
metadata
CHANGED
@@ -1,93 +1,89 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: whereabouts
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.5.4
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Nicholas Fine
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-12-02 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: activerecord
|
18
|
-
requirement: &
|
16
|
+
requirement: &19837800 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 3.0.0
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
|
-
version_requirements: *
|
27
|
-
- !ruby/object:Gem::Dependency
|
24
|
+
version_requirements: *19837800
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: activesupport
|
27
|
+
requirement: &19837140 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.0.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *19837140
|
36
|
+
- !ruby/object:Gem::Dependency
|
28
37
|
name: rspec
|
29
|
-
requirement: &
|
38
|
+
requirement: &19836420 !ruby/object:Gem::Requirement
|
30
39
|
none: false
|
31
|
-
requirements:
|
40
|
+
requirements:
|
32
41
|
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
42
|
+
- !ruby/object:Gem::Version
|
34
43
|
version: 2.3.0
|
35
44
|
type: :development
|
36
45
|
prerelease: false
|
37
|
-
version_requirements: *
|
38
|
-
- !ruby/object:Gem::Dependency
|
46
|
+
version_requirements: *19836420
|
47
|
+
- !ruby/object:Gem::Dependency
|
39
48
|
name: bundler
|
40
|
-
requirement: &
|
49
|
+
requirement: &19835600 !ruby/object:Gem::Requirement
|
41
50
|
none: false
|
42
|
-
requirements:
|
51
|
+
requirements:
|
43
52
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
53
|
+
- !ruby/object:Gem::Version
|
45
54
|
version: 1.0.0
|
46
55
|
type: :development
|
47
56
|
prerelease: false
|
48
|
-
version_requirements: *
|
49
|
-
- !ruby/object:Gem::Dependency
|
57
|
+
version_requirements: *19835600
|
58
|
+
- !ruby/object:Gem::Dependency
|
50
59
|
name: jeweler
|
51
|
-
requirement: &
|
60
|
+
requirement: &19834880 !ruby/object:Gem::Requirement
|
52
61
|
none: false
|
53
|
-
requirements:
|
62
|
+
requirements:
|
54
63
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
64
|
+
- !ruby/object:Gem::Version
|
56
65
|
version: 1.6.2
|
57
66
|
type: :development
|
58
67
|
prerelease: false
|
59
|
-
version_requirements: *
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: rcov
|
62
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
-
none: false
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: "0"
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: *id005
|
71
|
-
- !ruby/object:Gem::Dependency
|
68
|
+
version_requirements: *19834880
|
69
|
+
- !ruby/object:Gem::Dependency
|
72
70
|
name: sqlite3
|
73
|
-
requirement: &
|
71
|
+
requirement: &19834160 !ruby/object:Gem::Requirement
|
74
72
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version:
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
79
77
|
type: :development
|
80
78
|
prerelease: false
|
81
|
-
version_requirements: *
|
79
|
+
version_requirements: *19834160
|
82
80
|
description: Rails plugin for adding associated addresses to Active Record Models
|
83
81
|
email: nicholas.fine@gmail.com
|
84
82
|
executables: []
|
85
|
-
|
86
83
|
extensions: []
|
87
|
-
|
88
|
-
extra_rdoc_files:
|
84
|
+
extra_rdoc_files:
|
89
85
|
- README.markdown
|
90
|
-
files:
|
86
|
+
files:
|
91
87
|
- .document
|
92
88
|
- .rspec
|
93
89
|
- Gemfile
|
@@ -104,36 +100,32 @@ files:
|
|
104
100
|
- spec/spec_helper.rb
|
105
101
|
- spec/whereabouts_spec.rb
|
106
102
|
- whereabouts.gemspec
|
107
|
-
has_rdoc: true
|
108
103
|
homepage: http://github.com/yrgoldteeth/whereabouts
|
109
|
-
licenses:
|
104
|
+
licenses:
|
110
105
|
- MIT
|
111
106
|
post_install_message:
|
112
107
|
rdoc_options: []
|
113
|
-
|
114
|
-
require_paths:
|
108
|
+
require_paths:
|
115
109
|
- lib
|
116
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
117
111
|
none: false
|
118
|
-
requirements:
|
119
|
-
- -
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
|
122
|
-
segments:
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
segments:
|
123
117
|
- 0
|
124
|
-
|
125
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
hash: 46287067526210080
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
120
|
none: false
|
127
|
-
requirements:
|
128
|
-
- -
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version:
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
131
125
|
requirements: []
|
132
|
-
|
133
126
|
rubyforge_project:
|
134
|
-
rubygems_version: 1.6
|
127
|
+
rubygems_version: 1.8.6
|
135
128
|
signing_key:
|
136
129
|
specification_version: 3
|
137
130
|
summary: Whereabouts - has_whereabouts :address
|
138
131
|
test_files: []
|
139
|
-
|