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 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.5.4
1
+ 0.6.0
@@ -1,76 +1,71 @@
1
- module Yrgoldteeth
2
- module Has
3
- module Whereabouts
1
+ module Whereabouts
2
+ extend ActiveSupport::Concern
4
3
 
5
- # Extend the ClassMethods module
6
- def self.included(base)
7
- base.extend ClassMethods
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
- module ClassMethods
11
- # Accepts a symbol that will define the inherited
12
- # type of Address. Defaults to the parent class.
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
- # Define a singleton on the class that returns an array
24
- # that includes the address fields to validate presence of
25
- # or an empty array
26
- validate_singleton = "#{klass.to_s}_whereabouts_validate_fields".to_sym
27
- if options[:validate] && options[:validate].is_a?(Array)
28
- set_validators(klass, options[:validate])
29
- define_singleton_method validate_singleton do options[:validate] end
30
- else
31
- define_singleton_method validate_singleton do [] end
32
- end
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
- # Sets validates_presence_of fields for the Address based on the
46
- # singleton method created on the Address addressable_type class.
47
- def set_validators klass, fields=[]
48
- _single = "#{klass.to_s}_whereabouts_validate_fields".to_sym
49
- klass.to_s.camelize.constantize.class_eval do
50
- fields.each do |f|
51
- validates_presence_of f, :if => lambda {|a| a.addressable_type.constantize.send(_single).include?(f)}
52
- end
53
- end
54
- end
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
- # If defined, geocode the address.
57
- def set_geocoding klass
58
- _single = "#{klass.to_s}_whereabouts_geocode?".to_sym
59
- klass.to_s.camelize.constantize.class_eval do
60
- geocoded_by :geocode_address
61
- after_validation :geocode, :if => lambda {|a| a.addressable_type.constantize.send(_single) && (a.new_record? || a.changed?)}
62
- end
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
- # Generate a new class using Address as the superclass.
66
- # Accepts a string defining the inherited type.
67
- def create_address_class(class_name, &block)
68
- klass = Class.new Address, &block
69
- Object.const_set class_name, klass
70
- end
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.send(:include, Yrgoldteeth::Has::Whereabouts)
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.5.4"
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 = ["Nicholas Fine"]
12
- s.date = %q{2011-07-23}
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 = ["MIT"]
38
- s.require_paths = ["lib"]
39
- s.rubygems_version = %q{1.6.2}
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
- date: 2011-07-23 00:00:00 -05:00
14
- default_executable:
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: &id001 !ruby/object:Gem::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: *id001
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: &id002 !ruby/object:Gem::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: *id002
38
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *19836420
47
+ - !ruby/object:Gem::Dependency
39
48
  name: bundler
40
- requirement: &id003 !ruby/object:Gem::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: *id003
49
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *19835600
58
+ - !ruby/object:Gem::Dependency
50
59
  name: jeweler
51
- requirement: &id004 !ruby/object:Gem::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: *id004
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: &id006 !ruby/object:Gem::Requirement
71
+ requirement: &19834160 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
79
77
  type: :development
80
78
  prerelease: false
81
- version_requirements: *id006
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
- hash: -40591267
122
- segments:
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ segments:
123
117
  - 0
124
- version: "0"
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: "0"
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
131
125
  requirements: []
132
-
133
126
  rubyforge_project:
134
- rubygems_version: 1.6.2
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
-