indonesia 0.3.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd0de06b8a89de70689ed3c119e404d2f4a6eabd
4
- data.tar.gz: 7d288ae0e5da082f9b57899c897f436a847806b6
3
+ metadata.gz: b4f1f51e24ee2865412e6e1ac1f91de467b50a58
4
+ data.tar.gz: a2d20dc60c27d02d79babe13c176aea9b9a699d4
5
5
  SHA512:
6
- metadata.gz: 0345b0e20b75522a736d2deb553943efee1ba27346747cd42767d4b50fe907ac43bbafc9c5be5592496c326779e216a34b3a36dcf7dae93c7dc8a42388b5f2f5
7
- data.tar.gz: a2c3f75f6fa8efa4336b0fb7a0686a572dcc8f0cad79a72abe50c110b7db3f039520cadb8e614cbe6d84cc72e40adf60e468e46c7919f6ffb16eb383126244e3
6
+ metadata.gz: 34bd5c15dc30906a43e1ed964dc835e18296e15f2ffe58d849cd8ed71cde4e01555e20b90552fa04cae4d1c8c464dc4aa6cadbe8e2fee0c1564b267a7a55d567
7
+ data.tar.gz: a268db81a121de1ee10ed2226e4b8ddd6af24cca9166cb6d3a2f0c482e77303084c85a7abd8a55bccd87911d9d66c1076807d392287884533efeebe0724f2a4b
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /rails_app
@@ -1,7 +1,7 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.0.0
4
+ - 2.2.2
5
5
  before_install: gem install bundler
6
6
  install:
7
7
  - ./bin/setup
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/indonesia.svg)](https://badge.fury.io/rb/indonesia)
2
2
  [![Build Status](https://travis-ci.org/dimasjt/indonesia.svg?branch=master)](https://travis-ci.org/dimasjt/indonesia)
3
- [![Code Climate](https://codeclimate.com/github/dimasjt/indonesia/badges/gpa.svg)](https://codeclimate.com/github/dimasjt/indonesia)
4
3
 
5
4
 
6
5
  # Indonesia
@@ -12,7 +11,7 @@ Get Indonesia addresses provinces, regencies and districts. Data from [edwardsam
12
11
  Add this line to your application's Gemfile:
13
12
 
14
13
  ```ruby
15
- gem 'indonesia', '~> 0.2.0'
14
+ gem 'indonesia', '~> 0.4.0'
16
15
  ```
17
16
 
18
17
  And then execute:
@@ -25,6 +24,10 @@ Or install it yourself as:
25
24
 
26
25
  ## Usage
27
26
 
27
+ * [Rails helper](#rails-helper)
28
+ * [Rails migrations](#rails-migrations)
29
+
30
+
28
31
  * Get all provinces
29
32
  ```ruby
30
33
  Indonesia.provinces
@@ -59,7 +62,7 @@ Indonesia.districts
59
62
  Indonesia.districts(1101)
60
63
  ```
61
64
 
62
- ### Rails select options
65
+ ### Rails helper
63
66
 
64
67
  #### #options_for_select (:province, :regency, :district)
65
68
  ```ruby
@@ -103,6 +106,19 @@ or
103
106
  <%= f.select :district_id, Indonesia.options_for_select(:district, 1101) %>
104
107
  ```
105
108
 
109
+ ### Rails migrations
110
+
111
+ Generate models, migrations and save address data to database
112
+
113
+ Installation
114
+
115
+ ```bash
116
+ $ rails generate indonesia:install
117
+
118
+ $ rake db:migrate
119
+ ```
120
+ This will create models `Province`, `Regency` and `District`
121
+
106
122
  ## Development
107
123
 
108
124
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -117,4 +133,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/dimasj
117
133
  ## License
118
134
 
119
135
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
120
-
@@ -27,4 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency 'bundler', '~> 1.13'
28
28
  spec.add_development_dependency 'rake', '~> 10.0'
29
29
  spec.add_development_dependency 'minitest', '~> 5.0'
30
+
31
+ spec.add_development_dependency 'rails', '~> 5.0'
30
32
  end
@@ -0,0 +1,47 @@
1
+ require 'rails/generators/base'
2
+ require 'rails/generators/migration'
3
+ require 'rails/generators/active_record'
4
+
5
+ module Indonesia
6
+ module Generators
7
+ class InstallGenerator < Rails::Generators::Base
8
+ include Rails::Generators::Migration
9
+
10
+ desc 'Generate migrations and models for indonesia addresses'
11
+
12
+ source_root File.expand_path('../templates', __FILE__)
13
+
14
+ def self.next_migration_number(path)
15
+ unless @prev_migration_nr
16
+ @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
17
+ else
18
+ @prev_migration_nr += 1
19
+ end
20
+ @prev_migration_nr.to_s
21
+ end
22
+
23
+ def create_model
24
+ template 'models/province.rb', File.join('app/models', 'province.rb')
25
+ template 'models/regency.rb', File.join('app/models', 'regency.rb')
26
+ template 'models/district.rb', File.join('app/models', 'district.rb')
27
+ end
28
+
29
+ def create_indonesia_migration
30
+ migration_template 'migrations/province.rb', 'db/migrate/create_provinces.rb', migration_version: migration_version
31
+ migration_template 'migrations/regency.rb', 'db/migrate/create_regencies.rb', migration_version: migration_version
32
+ migration_template 'migrations/district.rb', 'db/migrate/create_districts.rb', migration_version: migration_version
33
+ migration_template 'migrations/data.rb', 'db/migrate/insert_indonesia_address.rb', migration_version: migration_version
34
+ end
35
+
36
+ def rails5?
37
+ Rails.version.start_with? '5'
38
+ end
39
+
40
+ def migration_version
41
+ if rails5?
42
+ "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,21 @@
1
+ class InsertIndonesiaAddress < ActiveRecord::Migration<%= migration_version %>
2
+ def self.up
3
+ Indonesia.provinces.each do |p|
4
+ Province.create(code: p[:id], name: p[:name])
5
+ end
6
+
7
+ Indonesia.regencies.each do |r|
8
+ Regency.create(code: r[:id], name: r[:name], province_code: r[:province_id])
9
+ end
10
+
11
+ Indonesia.districts.each do |d|
12
+ District.create(code: d[:id], name: d[:name], regency_code: d[:regency_id])
13
+ end
14
+ end
15
+
16
+ def self.down
17
+ Province.destroy_all
18
+ Regency.destroy_all
19
+ District.destroy_all
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ class CreateDistricts < ActiveRecord::Migration<%= migration_version %>
2
+ def self.up
3
+ create_table :districts, id: false do |t|
4
+ t.integer :code, null: false, primary: true
5
+ t.integer :regency_code, null: false
6
+ t.string :name, null: false
7
+ end
8
+
9
+ add_index :districts, :regency_code
10
+ end
11
+
12
+ def self.down
13
+ drop_table :districts
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ class CreateProvinces < ActiveRecord::Migration<%= migration_version %>
2
+ def self.up
3
+ create_table :provinces, id: false do |t|
4
+ t.integer :code, null: false, primary: true
5
+ t.string :name, null: false
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table :provinces
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ class CreateRegencies < ActiveRecord::Migration<%= migration_version %>
2
+ def self.up
3
+ create_table :regencies, id: false do |t|
4
+ t.integer :code, null: false, primary: true
5
+ t.integer :province_code, null: false
6
+ t.string :name, null: false
7
+ end
8
+
9
+ add_index :regencies, :province_code
10
+ end
11
+
12
+ def self.down
13
+ drop_table :regencies
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ class District < ActiveRecord::Base
2
+ self.primary_key = 'code'
3
+
4
+ belongs_to :regency, foreign_key: :regency_code
5
+
6
+ delegate :province, to: :regency
7
+ end
@@ -0,0 +1,6 @@
1
+ class Province < ActiveRecord::Base
2
+ self.primary_key = 'code'
3
+
4
+ has_many :regencies, foreign_key: :province_code
5
+ has_many :districts, through: :regencies
6
+ end
@@ -0,0 +1,6 @@
1
+ class Regency < ActiveRecord::Base
2
+ self.primary_key = 'code'
3
+
4
+ belongs_to :province, foreign_key: :province_code
5
+ has_many :districts, foreign_key: :regency_code
6
+ end
@@ -1,3 +1,3 @@
1
1
  module Indonesia
2
- VERSION = "0.3.0"
2
+ VERSION = '0.4.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: indonesia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimas J. Taniawan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-21 00:00:00.000000000 Z
11
+ date: 2017-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.0'
55
69
  description: Get Indonesia address provinces, regencies, districts
56
70
  email:
57
71
  - dimazniawan@gmail.com
@@ -69,6 +83,14 @@ files:
69
83
  - bin/console
70
84
  - bin/setup
71
85
  - indonesia.gemspec
86
+ - lib/generators/indonesia/install_generator.rb
87
+ - lib/generators/indonesia/templates/migrations/data.rb
88
+ - lib/generators/indonesia/templates/migrations/district.rb
89
+ - lib/generators/indonesia/templates/migrations/province.rb
90
+ - lib/generators/indonesia/templates/migrations/regency.rb
91
+ - lib/generators/indonesia/templates/models/district.rb
92
+ - lib/generators/indonesia/templates/models/province.rb
93
+ - lib/generators/indonesia/templates/models/regency.rb
72
94
  - lib/indonesia.rb
73
95
  - lib/indonesia/district.rb
74
96
  - lib/indonesia/province.rb
@@ -94,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
116
  version: '0'
95
117
  requirements: []
96
118
  rubyforge_project:
97
- rubygems_version: 2.5.2
119
+ rubygems_version: 2.5.1
98
120
  signing_key:
99
121
  specification_version: 4
100
122
  summary: Indonesia addresses