indonesia 0.3.0 → 0.4.0

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