whereabouts 0.5.4 → 0.6.0

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