my_zipcode_gem 0.1.2 → 0.1.3
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/.gitignore
CHANGED
data/README.textile
CHANGED
@@ -7,17 +7,17 @@ h2. Installation
|
|
7
7
|
Add the following line to your Gemfile:
|
8
8
|
|
9
9
|
bc. gem 'my_zipcode_gem'
|
10
|
-
|
10
|
+
|
11
11
|
Run:
|
12
12
|
|
13
13
|
bc. rake bundle install
|
14
|
-
|
14
|
+
|
15
15
|
Generate the models and populate the data:
|
16
16
|
|
17
17
|
bc. rails g my_zipcode_gem:models
|
18
18
|
rake db:migrate
|
19
19
|
rake zipcodes:update
|
20
|
-
|
20
|
+
|
21
21
|
You should now have three new tables and three new models, Zipcode, State, County.
|
22
22
|
|
23
23
|
h2. Usage
|
@@ -29,7 +29,7 @@ zipcode.county.name # => 'Johnson'
|
|
29
29
|
zipcode.lat.to_s # => '38.959356', it is actually a BigDecimal object converted to_s for documentation.
|
30
30
|
zipcode.lon.to_s # => '-94.716155', ditto
|
31
31
|
zipcode.is_geocoded? # => true, most if not all should be pre-geocoded.
|
32
|
-
|
32
|
+
|
33
33
|
You can also look for a zipcode from a city and state:
|
34
34
|
|
35
35
|
bc. Zipcode.find_by_city_state "Shawnee Mission", "KS"
|
@@ -45,7 +45,7 @@ county = state.counties.first
|
|
45
45
|
county.cities.count # => 5
|
46
46
|
county.cities # gives you a sorted array of all cities for the county
|
47
47
|
county.zipcodes.count # => 5
|
48
|
-
|
48
|
+
|
49
49
|
h3. Automatic JQuery/AJAX lookup
|
50
50
|
|
51
51
|
You can have a user enter a zipcode and automatically lookup their city, state and county.
|
@@ -115,7 +115,7 @@ And define a route for the AJAX function in routes.rb:
|
|
115
115
|
|
116
116
|
bc. get 'mycontrollername/get_zip_data/:code', :controller => 'mycontrollername', :action => 'get_zip_data'
|
117
117
|
|
118
|
-
That's about it.
|
118
|
+
That's about it.
|
119
119
|
|
120
120
|
Let me know if there are any errors. I cut and pasted the code above from a working application, but there may be some gotchas that I missed.
|
121
121
|
|
@@ -123,4 +123,4 @@ h2. LOG
|
|
123
123
|
|
124
124
|
h3. 05/03/2011:
|
125
125
|
|
126
|
-
Initial Release
|
126
|
+
Initial Release
|
@@ -9,8 +9,8 @@ end
|
|
9
9
|
Given %{a new migrated Rails app} do
|
10
10
|
# Don't delete the rails app
|
11
11
|
FileUtils.mkdir_p("tmp")
|
12
|
-
system("rails new tmp/rails_app").should be_true
|
13
|
-
system("ln -
|
12
|
+
system("rails new tmp/rails_app -f").should be_true
|
13
|
+
system("ln -sf ../../../lib/generators tmp/rails_app/lib/generators").should be_true
|
14
14
|
@current_directory = File.expand_path("tmp/rails_app")
|
15
15
|
When %{I run "rails g my_zipcode_gem:models"}
|
16
16
|
Then %{I should successfully run "rake db:migrate"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'open-uri'
|
2
|
-
require '
|
2
|
+
require 'csv'
|
3
3
|
namespace :zipcodes do
|
4
4
|
|
5
5
|
desc "Update states table"
|
@@ -16,7 +16,7 @@ namespace :zipcodes do
|
|
16
16
|
else
|
17
17
|
file = data
|
18
18
|
end
|
19
|
-
|
19
|
+
CSV.foreach(file.path, :headers => true) do |row|
|
20
20
|
puts "Updating state: [#{row['name']}]"
|
21
21
|
state = State.find_or_initialize_by_abbr(row['abbr'])
|
22
22
|
state.update_attribute(:name, row['name'])
|
@@ -39,7 +39,7 @@ namespace :zipcodes do
|
|
39
39
|
else
|
40
40
|
file = data
|
41
41
|
end
|
42
|
-
|
42
|
+
CSV.foreach(file.path, :headers => true) do |row|
|
43
43
|
puts "Updating county: [#{row['name']}]"
|
44
44
|
# lookup state
|
45
45
|
state = State.find_by_abbr!(row['state'])
|
@@ -64,7 +64,7 @@ namespace :zipcodes do
|
|
64
64
|
else
|
65
65
|
file = data
|
66
66
|
end
|
67
|
-
|
67
|
+
CSV.foreach(file.path, :headers => true) do |row|
|
68
68
|
puts "Updating zipcode: [#{row['code']}], '#{row['city']}, #{row['state']}, #{row['county']}"
|
69
69
|
# lookup state
|
70
70
|
state = State.find_by_abbr!(row['state'])
|
@@ -96,7 +96,7 @@ namespace :zipcodes do
|
|
96
96
|
desc "Export US States to a .csv file"
|
97
97
|
task :export_states => :environment do
|
98
98
|
@states = State.order("name ASC")
|
99
|
-
csv_string =
|
99
|
+
csv_string = CSV.generate do |csv|
|
100
100
|
csv << ["abbr", "name"]
|
101
101
|
@states.each do |state|
|
102
102
|
csv << [
|
@@ -114,7 +114,7 @@ namespace :zipcodes do
|
|
114
114
|
desc "Export all US Counties to a .csv file"
|
115
115
|
task :export_counties => :environment do
|
116
116
|
@counties = County.order("name ASC")
|
117
|
-
csv_string =
|
117
|
+
csv_string = CSV.generate do |csv|
|
118
118
|
csv << ["name", "state", "county_seat"]
|
119
119
|
@counties.each do |county|
|
120
120
|
csv << [
|
@@ -133,7 +133,7 @@ namespace :zipcodes do
|
|
133
133
|
desc "Export the zipcodes with county and state data"
|
134
134
|
task :export_zipcodes => :environment do
|
135
135
|
@zipcodes = Zipcode.order("code ASC")
|
136
|
-
csv_string =
|
136
|
+
csv_string = CSV.generate do |csv|
|
137
137
|
csv << ["code", "city", "state", "county", "area_code", "lat", "lon"]
|
138
138
|
@zipcodes.each do |zip|
|
139
139
|
csv << [
|
data/my_zipcode_gem.gemspec
CHANGED
metadata
CHANGED
@@ -1,165 +1,151 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: my_zipcode_gem
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 2
|
10
|
-
version: 0.1.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Chris Blackburn
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-08-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: rails
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 7
|
30
|
-
segments:
|
31
|
-
- 3
|
32
|
-
- 0
|
33
|
-
- 0
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
34
21
|
version: 3.0.0
|
35
22
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rubigen
|
39
23
|
prerelease: false
|
40
|
-
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.0.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rubigen
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - '='
|
36
|
+
- !ruby/object:Gem::Version
|
50
37
|
version: 1.5.6
|
51
38
|
type: :runtime
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: fastercsv
|
55
39
|
prerelease: false
|
56
|
-
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
|
63
|
-
- 0
|
64
|
-
version: "0"
|
65
|
-
type: :runtime
|
66
|
-
version_requirements: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - '='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.5.6
|
46
|
+
- !ruby/object:Gem::Dependency
|
68
47
|
name: sqlite3-ruby
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
hash: 3
|
76
|
-
segments:
|
77
|
-
- 0
|
78
|
-
version: "0"
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
79
54
|
type: :development
|
80
|
-
version_requirements: *id004
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: shoulda
|
83
55
|
prerelease: false
|
84
|
-
|
85
|
-
none: false
|
86
|
-
requirements:
|
87
|
-
- -
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: shoulda
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - '='
|
68
|
+
- !ruby/object:Gem::Version
|
94
69
|
version: 2.11.3
|
95
70
|
type: :development
|
96
|
-
version_requirements: *id005
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rspec
|
99
71
|
prerelease: false
|
100
|
-
|
101
|
-
none: false
|
102
|
-
requirements:
|
103
|
-
- -
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - '='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.11.3
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rspec
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
109
86
|
type: :development
|
110
|
-
version_requirements: *id006
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rspec-rails
|
113
87
|
prerelease: false
|
114
|
-
|
115
|
-
none: false
|
116
|
-
requirements:
|
117
|
-
- -
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rspec-rails
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
123
102
|
type: :development
|
124
|
-
version_requirements: *id007
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: cucumber
|
127
103
|
prerelease: false
|
128
|
-
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- -
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: cucumber
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
137
118
|
type: :development
|
138
|
-
version_requirements: *id008
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: cucumber-rails
|
141
119
|
prerelease: false
|
142
|
-
|
143
|
-
none: false
|
144
|
-
requirements:
|
145
|
-
- -
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: cucumber-rails
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
151
134
|
type: :development
|
152
|
-
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
153
142
|
description: A Ruby gem for looking up and manipulating US postal codes and geocodes.
|
154
|
-
email:
|
143
|
+
email:
|
155
144
|
- chris [at] midwiretech [dot] com
|
156
145
|
executables: []
|
157
|
-
|
158
146
|
extensions: []
|
159
|
-
|
160
147
|
extra_rdoc_files: []
|
161
|
-
|
162
|
-
files:
|
148
|
+
files:
|
163
149
|
- .gitignore
|
164
150
|
- Gemfile
|
165
151
|
- README.textile
|
@@ -178,41 +164,37 @@ files:
|
|
178
164
|
- lib/generators/my_zipcode_gem/version.rb
|
179
165
|
- lib/my_zipcode_gem.rb
|
180
166
|
- my_zipcode_gem.gemspec
|
181
|
-
has_rdoc: true
|
182
167
|
homepage: https://github.com/midwire/my_zipcode_gem
|
183
168
|
licenses: []
|
184
|
-
|
185
169
|
post_install_message:
|
186
170
|
rdoc_options: []
|
187
|
-
|
188
|
-
require_paths:
|
171
|
+
require_paths:
|
189
172
|
- lib
|
190
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
191
174
|
none: false
|
192
|
-
requirements:
|
193
|
-
- -
|
194
|
-
- !ruby/object:Gem::Version
|
195
|
-
|
196
|
-
segments:
|
175
|
+
requirements:
|
176
|
+
- - ! '>='
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
segments:
|
197
180
|
- 0
|
198
|
-
|
199
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
|
+
hash: 2335148937812189379
|
182
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
183
|
none: false
|
201
|
-
requirements:
|
202
|
-
- -
|
203
|
-
- !ruby/object:Gem::Version
|
204
|
-
|
205
|
-
segments:
|
184
|
+
requirements:
|
185
|
+
- - ! '>='
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
segments:
|
206
189
|
- 0
|
207
|
-
|
190
|
+
hash: 2335148937812189379
|
208
191
|
requirements: []
|
209
|
-
|
210
192
|
rubyforge_project: my_zipcode_gem
|
211
|
-
rubygems_version: 1.
|
193
|
+
rubygems_version: 1.8.24
|
212
194
|
signing_key:
|
213
195
|
specification_version: 3
|
214
196
|
summary: A Ruby gem to handle all things zipcode.
|
215
|
-
test_files:
|
197
|
+
test_files:
|
216
198
|
- features/step_definitions/common_steps.rb
|
217
199
|
- features/step_definitions/rails_setup_steps.rb
|
218
200
|
- features/support/env.rb
|