Simple gem to get city, state, and time zone for a given zip code. It has a yaml database bundled with it, so you need several mb of memory for the whole hash.
Add this line to your application's Gemfile:
gem 'zip-codes'
And then execute:
$ bundle
Or install it yourself as:
$ gem install zip-codes
ZipCodes.identify(ZIP_CODE, optional: array_of_countries(default => ["US"]))
ZipCodes.identify('30301')
# => {:state_code=>"GA", :state_name=>"Georgia", :city=>"Atlanta", :time_zone=>"America/New_York"}
ZipCodes.identify('06601', ["CZ", "SK"])
# => {:state_code=>"SK", :state_name=>"Slovenská republika", :city=>"Humenné 1"}
ZipCodes.identify('16000', ["CZ", "SK"])
# => {:state_code=>"CZ", :state_name=>"Česká republika", :city=>"Praha 6"}
First run or run after change countries will take a while, as the yaml has to be loaded
Available countries:
US, SK, CZ
If you are using Rails, you can load the hash on app startup for production and staging.
# config/initializers/load_zip_codes.rb
ZipCodes.load unless Rails.env.development?
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request