geo_master_jp 0.1.25
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +52 -0
- data/Rakefile +27 -0
- data/lib/generators/geo_master_jp/data/company20180424.csv.zip +0 -0
- data/lib/generators/geo_master_jp/data/join20190405.csv.zip +0 -0
- data/lib/generators/geo_master_jp/data/line20190405free.csv.zip +0 -0
- data/lib/generators/geo_master_jp/data/prefectures.yml +329 -0
- data/lib/generators/geo_master_jp/data/station20190405free.csv.zip +0 -0
- data/lib/generators/geo_master_jp/install_area_data_generator.rb +128 -0
- data/lib/generators/geo_master_jp/install_generator.rb +18 -0
- data/lib/generators/geo_master_jp/install_migration_generator.rb +51 -0
- data/lib/generators/geo_master_jp/install_railway_data_generator.rb +201 -0
- data/lib/generators/geo_master_jp/templates/create_cities.rb.erb +16 -0
- data/lib/generators/geo_master_jp/templates/create_lines.rb.erb +23 -0
- data/lib/generators/geo_master_jp/templates/create_prefectures.rb.erb +13 -0
- data/lib/generators/geo_master_jp/templates/create_railway_companies.rb.erb +18 -0
- data/lib/generators/geo_master_jp/templates/create_station_connections.rb.erb +14 -0
- data/lib/generators/geo_master_jp/templates/create_stations.rb.erb +27 -0
- data/lib/generators/geo_master_jp/templates/create_towns.rb.erb +19 -0
- data/lib/generators/geo_master_jp/templates/create_versions.rb.erb +10 -0
- data/lib/generators/geo_master_jp/templates/geo_master_jp.rb +15 -0
- data/lib/geo_master_jp/association_helper.rb +13 -0
- data/lib/geo_master_jp/config.rb +15 -0
- data/lib/geo_master_jp/engine.rb +27 -0
- data/lib/geo_master_jp/models/city.rb +21 -0
- data/lib/geo_master_jp/models/line.rb +21 -0
- data/lib/geo_master_jp/models/prefecture.rb +21 -0
- data/lib/geo_master_jp/models/railway_company.rb +19 -0
- data/lib/geo_master_jp/models/station.rb +22 -0
- data/lib/geo_master_jp/models/station_connection.rb +17 -0
- data/lib/geo_master_jp/models/town.rb +21 -0
- data/lib/geo_master_jp/models/version.rb +16 -0
- data/lib/geo_master_jp/railtie.rb +4 -0
- data/lib/geo_master_jp/version.rb +3 -0
- data/lib/geo_master_jp.rb +9 -0
- data/lib/tasks/geo_master_jp_tasks.rake +4 -0
- metadata +149 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e37df4a089fc32f61b506648b3335984f8c1dce556e78d358e7e1c9a79ddb9aa
|
4
|
+
data.tar.gz: 19fb76758bc175698394db53048286a7a1b9eaa453072a4115892d50cf5af75b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f2d121d737c1f492d54175baff56f2f07218f8f6fe8ba04ddd83215809bac5cbc7416e9580f9b4452a3527dc87d70f3ec23b9dffb7d6fd73aa1395e967fc4ac2
|
7
|
+
data.tar.gz: 254fd7458157d3b9ec67253f446d0c58d0edb459169f1ed35e3214c434206e8097cfe97438dc4591d62ad768a44c050f354ec1b71a9a959b0ebacc3d0bf2d2f0
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2019 ykogure
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# WIP
|
2
|
+
This gem is WIP!
|
3
|
+
|
4
|
+
# GeoMasterJp
|
5
|
+
Short description and motivation.
|
6
|
+
|
7
|
+
## Usage
|
8
|
+
How to use my plugin.
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'geo_master_jp'
|
15
|
+
```
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
```bash
|
19
|
+
$ bundle
|
20
|
+
```
|
21
|
+
|
22
|
+
Or install it yourself as:
|
23
|
+
```bash
|
24
|
+
$ gem install geo_master_jp
|
25
|
+
```
|
26
|
+
|
27
|
+
## Initialize
|
28
|
+
### Create Config File
|
29
|
+
```bash
|
30
|
+
rails g geo_master_jp:install
|
31
|
+
```
|
32
|
+
|
33
|
+
### Create Migration Files
|
34
|
+
```bash
|
35
|
+
rails g geo_master_jp:install_migration
|
36
|
+
```
|
37
|
+
|
38
|
+
### Import Area Data
|
39
|
+
```bash
|
40
|
+
rails g geo_master_jp:install_area_data
|
41
|
+
```
|
42
|
+
|
43
|
+
### Import Railway Data
|
44
|
+
```bash
|
45
|
+
rails g geo_master_jp:install_railway_data
|
46
|
+
```
|
47
|
+
|
48
|
+
## Contributing
|
49
|
+
Contribution directions go here.
|
50
|
+
|
51
|
+
## License
|
52
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'GeoMasterJp'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.md')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'bundler/gem_tasks'
|
18
|
+
|
19
|
+
require 'rake/testtask'
|
20
|
+
|
21
|
+
Rake::TestTask.new(:test) do |t|
|
22
|
+
t.libs << 'test'
|
23
|
+
t.pattern = 'test/**/*_test.rb'
|
24
|
+
t.verbose = false
|
25
|
+
end
|
26
|
+
|
27
|
+
task default: :test
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,329 @@
|
|
1
|
+
-
|
2
|
+
id: 1
|
3
|
+
code: '01'
|
4
|
+
name: 北海道
|
5
|
+
name_kana: ホッカイドウ
|
6
|
+
name_alphabet: hokkaido
|
7
|
+
short_name: 北海道
|
8
|
+
-
|
9
|
+
id: 2
|
10
|
+
code: '02'
|
11
|
+
name: 青森県
|
12
|
+
name_kana: アオモリケン
|
13
|
+
name_alphabet: aomori
|
14
|
+
short_name: 青森
|
15
|
+
-
|
16
|
+
id: 3
|
17
|
+
code: '03'
|
18
|
+
name: 岩手県
|
19
|
+
name_kana: イワテケン
|
20
|
+
name_alphabet: iwate
|
21
|
+
short_name: 岩手
|
22
|
+
-
|
23
|
+
id: 4
|
24
|
+
code: '04'
|
25
|
+
name: 宮城県
|
26
|
+
name_kana: ミヤギケン
|
27
|
+
name_alphabet: miyagi
|
28
|
+
short_name: 宮城
|
29
|
+
-
|
30
|
+
id: 5
|
31
|
+
code: '05'
|
32
|
+
name: 秋田県
|
33
|
+
name_kana: アキタケン
|
34
|
+
name_alphabet: akita
|
35
|
+
short_name: 秋田
|
36
|
+
-
|
37
|
+
id: 6
|
38
|
+
code: '06'
|
39
|
+
name: 山形県
|
40
|
+
name_kana: ヤマガタケン
|
41
|
+
name_alphabet: yamagata
|
42
|
+
short_name: 山形
|
43
|
+
-
|
44
|
+
id: 7
|
45
|
+
code: '07'
|
46
|
+
name: 福島県
|
47
|
+
name_kana: フクシマケン
|
48
|
+
name_alphabet: fukushima
|
49
|
+
short_name: 福島
|
50
|
+
-
|
51
|
+
id: 8
|
52
|
+
code: '08'
|
53
|
+
name: 茨城県
|
54
|
+
name_kana: イバラキケン
|
55
|
+
name_alphabet: ibaraki
|
56
|
+
short_name: 茨城
|
57
|
+
-
|
58
|
+
id: 9
|
59
|
+
code: '09'
|
60
|
+
name: 栃木県
|
61
|
+
name_kana: トチギケン
|
62
|
+
name_alphabet: tochigi
|
63
|
+
short_name: 栃木
|
64
|
+
-
|
65
|
+
id: 10
|
66
|
+
code: '10'
|
67
|
+
name: 群馬県
|
68
|
+
name_kana: グンマケン
|
69
|
+
name_alphabet: gumma
|
70
|
+
short_name: 群馬
|
71
|
+
-
|
72
|
+
id: 11
|
73
|
+
code: '11'
|
74
|
+
name: 埼玉県
|
75
|
+
name_kana: サイタマケン
|
76
|
+
name_alphabet: saitama
|
77
|
+
short_name: 埼玉
|
78
|
+
-
|
79
|
+
id: 12
|
80
|
+
code: '12'
|
81
|
+
name: 千葉県
|
82
|
+
name_kana: チバケン
|
83
|
+
name_alphabet: chiba
|
84
|
+
short_name: 千葉
|
85
|
+
-
|
86
|
+
id: 13
|
87
|
+
code: '13'
|
88
|
+
name: 東京都
|
89
|
+
name_kana: トウキョウト
|
90
|
+
name_alphabet: tokyo
|
91
|
+
short_name: 東京
|
92
|
+
-
|
93
|
+
id: 14
|
94
|
+
code: '14'
|
95
|
+
name: 神奈川県
|
96
|
+
name_kana: カナガワケン
|
97
|
+
name_alphabet: kanagawa
|
98
|
+
short_name: 神奈川
|
99
|
+
-
|
100
|
+
id: 15
|
101
|
+
code: '15'
|
102
|
+
name: 新潟県
|
103
|
+
name_kana: ニイガタケン
|
104
|
+
name_alphabet: niigata
|
105
|
+
short_name: 新潟
|
106
|
+
-
|
107
|
+
id: 16
|
108
|
+
code: '16'
|
109
|
+
name: 富山県
|
110
|
+
name_kana: トヤマケン
|
111
|
+
name_alphabet: toyama
|
112
|
+
short_name: 富山
|
113
|
+
-
|
114
|
+
id: 17
|
115
|
+
code: '17'
|
116
|
+
name: 石川県
|
117
|
+
name_kana: イシカワケン
|
118
|
+
name_alphabet: ishikawa
|
119
|
+
short_name: 石川
|
120
|
+
-
|
121
|
+
id: 18
|
122
|
+
code: '18'
|
123
|
+
name: 福井県
|
124
|
+
name_kana: フクイケン
|
125
|
+
name_alphabet: fukui
|
126
|
+
short_name: 福井
|
127
|
+
-
|
128
|
+
id: 19
|
129
|
+
code: '19'
|
130
|
+
name: 山梨県
|
131
|
+
name_kana: ヤマナシケン
|
132
|
+
name_alphabet: yamanashi
|
133
|
+
short_name: 山梨
|
134
|
+
-
|
135
|
+
id: 20
|
136
|
+
code: '20'
|
137
|
+
name: 長野県
|
138
|
+
name_kana: ナガノケン
|
139
|
+
name_alphabet: nagano
|
140
|
+
short_name: 長野
|
141
|
+
-
|
142
|
+
id: 21
|
143
|
+
code: '21'
|
144
|
+
name: 岐阜県
|
145
|
+
name_kana: ギフケン
|
146
|
+
name_alphabet: gifu
|
147
|
+
short_name: 岐阜
|
148
|
+
-
|
149
|
+
id: 22
|
150
|
+
code: '22'
|
151
|
+
name: 静岡県
|
152
|
+
name_kana: シズオカケン
|
153
|
+
name_alphabet: shizuoka
|
154
|
+
short_name: 静岡
|
155
|
+
-
|
156
|
+
id: 23
|
157
|
+
code: '23'
|
158
|
+
name: 愛知県
|
159
|
+
name_kana: アイチケン
|
160
|
+
name_alphabet: aichi
|
161
|
+
short_name: 愛知
|
162
|
+
-
|
163
|
+
id: 24
|
164
|
+
code: '24'
|
165
|
+
name: 三重県
|
166
|
+
name_kana: ミエケン
|
167
|
+
name_alphabet: mie
|
168
|
+
short_name: 三重
|
169
|
+
-
|
170
|
+
id: 25
|
171
|
+
code: '25'
|
172
|
+
name: 滋賀県
|
173
|
+
name_kana: シガケン
|
174
|
+
name_alphabet: shiga
|
175
|
+
short_name: 滋賀
|
176
|
+
-
|
177
|
+
id: 26
|
178
|
+
code: '26'
|
179
|
+
name: 京都府
|
180
|
+
name_kana: キョウトフ
|
181
|
+
name_alphabet: kyoto
|
182
|
+
short_name: 京都
|
183
|
+
-
|
184
|
+
id: 27
|
185
|
+
code: '27'
|
186
|
+
name: 大阪府
|
187
|
+
name_kana: オオサカフ
|
188
|
+
name_alphabet: osaka
|
189
|
+
short_name: 大阪
|
190
|
+
-
|
191
|
+
id: 28
|
192
|
+
code: '28'
|
193
|
+
name: 兵庫県
|
194
|
+
name_kana: ヒョウゴケン
|
195
|
+
name_alphabet: hyogo
|
196
|
+
short_name: 兵庫
|
197
|
+
-
|
198
|
+
id: 29
|
199
|
+
code: '29'
|
200
|
+
name: 奈良県
|
201
|
+
name_kana: ナラケン
|
202
|
+
name_alphabet: nara
|
203
|
+
short_name: 奈良
|
204
|
+
-
|
205
|
+
id: 30
|
206
|
+
code: '30'
|
207
|
+
name: 和歌山県
|
208
|
+
name_kana: ワカヤマケン
|
209
|
+
name_alphabet: wakayama
|
210
|
+
short_name: 和歌山
|
211
|
+
-
|
212
|
+
id: 31
|
213
|
+
code: '31'
|
214
|
+
name: 鳥取県
|
215
|
+
name_kana: トットリケン
|
216
|
+
name_alphabet: tottori
|
217
|
+
short_name: 鳥取
|
218
|
+
-
|
219
|
+
id: 32
|
220
|
+
code: '32'
|
221
|
+
name: 島根県
|
222
|
+
name_kana: シマネケン
|
223
|
+
name_alphabet: shimane
|
224
|
+
short_name: 島根
|
225
|
+
-
|
226
|
+
id: 33
|
227
|
+
code: '33'
|
228
|
+
name: 岡山県
|
229
|
+
name_kana: オカヤマケン
|
230
|
+
name_alphabet: okayama
|
231
|
+
short_name: 岡山
|
232
|
+
-
|
233
|
+
id: 34
|
234
|
+
code: '34'
|
235
|
+
name: 広島県
|
236
|
+
name_kana: ヒロシマケン
|
237
|
+
name_alphabet: hiroshima
|
238
|
+
short_name: 広島
|
239
|
+
-
|
240
|
+
id: 35
|
241
|
+
code: '35'
|
242
|
+
name: 山口県
|
243
|
+
name_kana: ヤマグチケン
|
244
|
+
name_alphabet: yamaguchi
|
245
|
+
short_name: 山口
|
246
|
+
-
|
247
|
+
id: 36
|
248
|
+
code: '36'
|
249
|
+
name: 徳島県
|
250
|
+
name_kana: トクシマケン
|
251
|
+
name_alphabet: tokushima
|
252
|
+
short_name: 徳島
|
253
|
+
-
|
254
|
+
id: 37
|
255
|
+
code: '37'
|
256
|
+
name: 香川県
|
257
|
+
name_kana: カガワケン
|
258
|
+
name_alphabet: kagawa
|
259
|
+
short_name: 香川
|
260
|
+
-
|
261
|
+
id: 38
|
262
|
+
code: '38'
|
263
|
+
name: 愛媛県
|
264
|
+
name_kana: エヒメケン
|
265
|
+
name_alphabet: ehime
|
266
|
+
short_name: 愛媛
|
267
|
+
-
|
268
|
+
id: 39
|
269
|
+
code: '39'
|
270
|
+
name: 高知県
|
271
|
+
name_kana: コウチケン
|
272
|
+
name_alphabet: kochi
|
273
|
+
short_name: 高知
|
274
|
+
-
|
275
|
+
id: 40
|
276
|
+
code: '40'
|
277
|
+
name: 福岡県
|
278
|
+
name_kana: フクオカケン
|
279
|
+
name_alphabet: fukuoka
|
280
|
+
short_name: 福岡
|
281
|
+
-
|
282
|
+
id: 41
|
283
|
+
code: '41'
|
284
|
+
name: 佐賀県
|
285
|
+
name_kana: サガケン
|
286
|
+
name_alphabet: saga
|
287
|
+
short_name: 佐賀
|
288
|
+
-
|
289
|
+
id: 42
|
290
|
+
code: '42'
|
291
|
+
name: 長崎県
|
292
|
+
name_kana: ナガサキケン
|
293
|
+
name_alphabet: nagasaki
|
294
|
+
short_name: 長崎
|
295
|
+
-
|
296
|
+
id: 43
|
297
|
+
code: '43'
|
298
|
+
name: 熊本県
|
299
|
+
name_kana: クマモトケン
|
300
|
+
name_alphabet: kumamoto
|
301
|
+
short_name: 熊本
|
302
|
+
-
|
303
|
+
id: 44
|
304
|
+
code: '44'
|
305
|
+
name: 大分県
|
306
|
+
name_kana: オオイタケン
|
307
|
+
name_alphabet: oita
|
308
|
+
short_name: 大分
|
309
|
+
-
|
310
|
+
id: 45
|
311
|
+
code: '45'
|
312
|
+
name: 宮崎県
|
313
|
+
name_kana: ミヤザキケン
|
314
|
+
name_alphabet: miyazaki
|
315
|
+
short_name: 宮崎
|
316
|
+
-
|
317
|
+
id: 46
|
318
|
+
code: '46'
|
319
|
+
name: 鹿児島県
|
320
|
+
name_kana: カゴシマケン
|
321
|
+
name_alphabet: kagoshima
|
322
|
+
short_name: 鹿児島
|
323
|
+
-
|
324
|
+
id: 47
|
325
|
+
code: '47'
|
326
|
+
name: 沖縄県
|
327
|
+
name_kana: オキナワケン
|
328
|
+
name_alphabet: okinawa
|
329
|
+
short_name: 沖縄
|
Binary file
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'zip'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'yaml'
|
4
|
+
require 'romaji'
|
5
|
+
require 'nkf'
|
6
|
+
|
7
|
+
module GeoMasterJp
|
8
|
+
module Generators
|
9
|
+
class InstallAreaDataGenerator < Rails::Generators::Base
|
10
|
+
VERSION = '20201201'
|
11
|
+
|
12
|
+
source_root File.expand_path('templates', __dir__)
|
13
|
+
|
14
|
+
desc "Download and insert geo data to your application databases."
|
15
|
+
|
16
|
+
def set_prefectures
|
17
|
+
if GeoMasterJp::Prefecture.count > 0
|
18
|
+
puts "Prefecture is already exists and skip."
|
19
|
+
return
|
20
|
+
end
|
21
|
+
YAML.load_file("#{__dir__}/data/prefectures.yml").each do |prefecture|
|
22
|
+
GeoMasterJp::Prefecture.create(prefecture)
|
23
|
+
end
|
24
|
+
|
25
|
+
puts "Set Prefecture is complete."
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_cities_and_towns
|
29
|
+
if (GeoMasterJp::Version.last_version(GeoMasterJp::City).present? && GeoMasterJp::Version.last_version(GeoMasterJp::City) >= Date.parse(VERSION)) && (GeoMasterJp::Version.last_version(GeoMasterJp::Town).present? && GeoMasterJp::Version.last_version(GeoMasterJp::Town) >= Date.parse(VERSION))
|
30
|
+
puts "City and Town is already latest version and skip."
|
31
|
+
return
|
32
|
+
end
|
33
|
+
|
34
|
+
csv_data = download_city_and_town_data_and_convert_to_csv
|
35
|
+
csv_data.group_by{|row| row[0][0..1]}.each_with_index do |(prefecture_code, rows), idx|
|
36
|
+
print "Setting City and Town ...#{idx+1}/#{47}\r"
|
37
|
+
|
38
|
+
prefecture = GeoMasterJp::Prefecture.find_by(code: prefecture_code)
|
39
|
+
|
40
|
+
towns = {}
|
41
|
+
rows.group_by{|row| row[0][0..4]}.each do |city_code, town_rows|
|
42
|
+
next if town_rows[0][10].blank?
|
43
|
+
|
44
|
+
if city = GeoMasterJp::City.find_by(code: city_code)
|
45
|
+
if town_rows[0][26] == '2' # 変更
|
46
|
+
city = set_city(city, town_rows[0])
|
47
|
+
|
48
|
+
city.save
|
49
|
+
end
|
50
|
+
else # 新規
|
51
|
+
city = prefecture.cities.build(code: city_code)
|
52
|
+
city = set_city(city, town_rows[0])
|
53
|
+
|
54
|
+
city.save
|
55
|
+
end
|
56
|
+
|
57
|
+
towns[city.code] = []
|
58
|
+
town_rows.each do |town_row|
|
59
|
+
town_code = town_row[0]
|
60
|
+
|
61
|
+
if town = GeoMasterJp::Town.find_by(code: town_code)
|
62
|
+
if town_row[26] == '2' # 変更
|
63
|
+
town = set_town(town, row)
|
64
|
+
town.city = city
|
65
|
+
|
66
|
+
town.save
|
67
|
+
elsif town_row[26] == '3' # 廃止
|
68
|
+
town.update!(deleted_at: Time.current)
|
69
|
+
end
|
70
|
+
else # 新規
|
71
|
+
town = city.towns.build(geo_master_jp_prefecture_code: prefecture.code, code: town_code)
|
72
|
+
town = set_town(town, town_row)
|
73
|
+
town.city = city
|
74
|
+
|
75
|
+
towns[city.code] << town
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
towns.each do |_city_code, ts|
|
81
|
+
GeoMasterJp::Town.import ts
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
GeoMasterJp::Version.create!(model_name_string: GeoMasterJp::City.to_s, version: Date.parse(VERSION))
|
86
|
+
GeoMasterJp::Version.create!(model_name_string: GeoMasterJp::Town.to_s, version: Date.parse(VERSION))
|
87
|
+
|
88
|
+
print "\n"
|
89
|
+
puts "Set City and Town is complete."
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
def download_city_and_town_data_and_convert_to_csv
|
95
|
+
url = "https://www.japan-database.jp/database/#{VERSION[0..3]}/addressfc#{VERSION[0..5]}.zip"
|
96
|
+
|
97
|
+
csv_data = nil
|
98
|
+
OpenURI.open_uri(url) do |file|
|
99
|
+
Zip::File.open_buffer(file.read) do |zip|
|
100
|
+
entry = zip.glob("addressf#{VERSION[0..5]}.csv").first
|
101
|
+
csv_data = entry.get_input_stream.read
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
csv_data.encode("UTF-8", "CP932").split(/\r\n/).map{|row| row.split(',')}.map{|row| row.map{|val| val.gsub(/(^[[:space:]]+)|([[:space:]]+$)/, '')}}
|
106
|
+
end
|
107
|
+
|
108
|
+
def set_city(city, row)
|
109
|
+
city.name = row[10]
|
110
|
+
city.name_kana = row[6].present? ? NKF.nkf("-Xw", row[6]) : ''
|
111
|
+
city.name_alphabet = Romaji.kana2romaji(city.name_kana)
|
112
|
+
|
113
|
+
city
|
114
|
+
end
|
115
|
+
|
116
|
+
def set_town(town, row)
|
117
|
+
town.name = row[11] + row[12]
|
118
|
+
town.name_kana = (row[7] + row[8]).present? ? NKF.nkf("-Xw", row[7] + row[8]) : ''
|
119
|
+
town.name_alphabet = Romaji.kana2romaji(town.name_kana)
|
120
|
+
town.zip_code = row[2]
|
121
|
+
town.deleted_at = Time.current if row[26] == '3' # 廃止
|
122
|
+
|
123
|
+
town
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "rails/generators"
|
2
|
+
require "rails/generators/active_record"
|
3
|
+
|
4
|
+
module GeoMasterJp
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
include ::Rails::Generators::Migration
|
8
|
+
|
9
|
+
source_root File.expand_path('templates', __dir__)
|
10
|
+
|
11
|
+
desc "Creates a Geo Master Jp initializer to your application."
|
12
|
+
|
13
|
+
def copy_initializer
|
14
|
+
template "geo_master_jp.rb", "config/initializers/geo_master_jp.rb"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "rails/generators"
|
2
|
+
require "rails/generators/active_record"
|
3
|
+
|
4
|
+
module GeoMasterJp
|
5
|
+
module Generators
|
6
|
+
class InstallMigrationGenerator < Rails::Generators::Base
|
7
|
+
include ::Rails::Generators::Migration
|
8
|
+
|
9
|
+
source_root File.expand_path('templates', __dir__)
|
10
|
+
|
11
|
+
desc "Creates a Geo Master Jp Migaration Files to your application."
|
12
|
+
|
13
|
+
def self.next_migration_number(dirname)
|
14
|
+
::ActiveRecord::Generators::Base.next_migration_number(dirname)
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_migration_file
|
18
|
+
templates = ['create_versions']
|
19
|
+
if GeoMasterJp.config.use_models.include?(:area)
|
20
|
+
templates += ['create_prefectures', 'create_cities', 'create_towns', 'create_versions']
|
21
|
+
end
|
22
|
+
if GeoMasterJp.config.use_models.include?(:railway)
|
23
|
+
templates += ['create_prefectures', 'create_cities', 'create_towns', 'create_railway_companies', 'create_lines', 'create_stations', 'create_station_connections']
|
24
|
+
end
|
25
|
+
|
26
|
+
migration_dir = File.expand_path("db/migrate")
|
27
|
+
templates.each do |template|
|
28
|
+
if self.class.migration_exists?(migration_dir, template)
|
29
|
+
::Kernel.warn "Migration already exists: #{template}"
|
30
|
+
else
|
31
|
+
migration_template(
|
32
|
+
"#{template}.rb.erb",
|
33
|
+
"db/migrate/#{template}.rb",
|
34
|
+
migration_version: migration_version
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def migration_version
|
43
|
+
major = ActiveRecord::VERSION::MAJOR
|
44
|
+
if major >= 5
|
45
|
+
"[#{major}.#{ActiveRecord::VERSION::MINOR}]"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|