jp_address_complement 0.1.0 → 0.2.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 +4 -4
- data/CHANGELOG.md +8 -18
- data/README.md +14 -4
- data/examples/rails/jp_address_complement_demo/Gemfile.lock +0 -2
- data/lib/jp_address_complement/railtie.rb +2 -0
- data/lib/jp_address_complement/version.rb +1 -1
- data/lib/jp_address_complement.rb +22 -4
- data/sig/generated/jp_address_complement.rbs +2 -1
- metadata +23 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 65c654356d4cf02a324ae3bd6a91302b9b01f124c40764b243be16b5250c4e8b
|
|
4
|
+
data.tar.gz: 5edc22e95c71f0348a460edc70b800f892060399ee4a8cdba8a03d7469e50c77
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3aede94e81398e1b13a22753aa39c104f65644adc78a34d9e624bfbf5be689265163f9e781bc20ec68282ae8a39dec3b6a643f5b07bece90f3625c5597bc9074
|
|
7
|
+
data.tar.gz: 818c73343376926aa0ce127b37a9a4b524ce49a7d4db030ed4dcd0c1d1d5c6b7e11cd1d3a5906ade66377525db08bcb4b7d34d85a34298c31eab518a7c37688d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,25 +1,15 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
- **CSV インポート(003: 消えたレコード削除)**
|
|
6
|
-
- `JpAddressComplement::Importers::CsvImporter#import` の戻り値を **Integer から `ImportResult`(Data.define :upserted, :deleted)に変更**(破壊的変更)
|
|
7
|
-
- フルインポート時に、今回のCSVに存在しない住所レコードをストアから削除するようにした
|
|
8
|
-
- 空CSV(有効行0件)の場合はインポートを拒否し、`JpAddressComplement::ImportError` を発生させる
|
|
9
|
-
- Rake タスク `jp_address_complement:import` の完了メッセージを「インポート完了: upsert N 件, 削除 M 件」形式に変更
|
|
3
|
+
## [0.2.0] - 2026-03-02
|
|
10
4
|
|
|
11
|
-
###
|
|
12
|
-
|
|
13
|
-
- **都道府県コード変換・住所逆引き(004)**
|
|
14
|
-
- `JpAddressComplement.prefecture_name_from_code(code)` — 都道府県コード(2桁)から正式名称を返す(該当なしは nil)
|
|
15
|
-
- `JpAddressComplement.prefecture_code_from_name(name)` — 都道府県の正式名称から2桁コードを返す(該当なしは nil)
|
|
16
|
-
- `JpAddressComplement.search_postal_codes_by_address(pref:, city:, town: nil)` — 都道府県・市区町村・町域から郵便番号候補を逆引き(該当なし・入力不十分時は [])
|
|
5
|
+
### Changed
|
|
17
6
|
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
7
|
+
- **Active Record をオプショナルに変更**
|
|
8
|
+
- gemspec: `activerecord` / `railties` を runtime 依存から削除し、development 依存に移動
|
|
9
|
+
- デフォルトリポジトリ・`base_record_class`: Gemfile のみで未 require の場合に備え、require を試してから利用するよう変更(`defined?` 判定を廃止)
|
|
10
|
+
- Railtie: 同様に `require 'rails'` を試してから読み込むよう変更
|
|
11
|
+
- `default_repository`: LoadError 時に利用者向けメッセージで `JpAddressComplement::Error` を発生
|
|
12
|
+
- README: 必要環境・インストール手順に利用者側の対応を追記
|
|
23
13
|
|
|
24
14
|
## [0.1.0] - 2026-02-22
|
|
25
15
|
|
data/README.md
CHANGED
|
@@ -26,8 +26,7 @@
|
|
|
26
26
|
## 必要環境
|
|
27
27
|
|
|
28
28
|
- Ruby 3.2 以上
|
|
29
|
-
- Rails 7.
|
|
30
|
-
- ActiveRecord 利用を前提としています
|
|
29
|
+
- **デフォルトの DB 利用(ActiveRecord)を使う場合のみ**: Rails 7.0 以上および `activerecord` gem(Rails アプリでは通常含まれる)。使わない場合は不要です。
|
|
31
30
|
|
|
32
31
|
## インストール
|
|
33
32
|
|
|
@@ -39,13 +38,24 @@
|
|
|
39
38
|
gem 'jp_address_complement'
|
|
40
39
|
```
|
|
41
40
|
|
|
41
|
+
**デフォルトの ActiveRecord リポジトリを使う場合(DB に郵便番号テーブルを置く場合)**
|
|
42
|
+
本 gem は `activerecord` を必須依存にしていません。Rails アプリでは `gem 'rails'` に含まれるため追加不要です。Rails を使わずに ActiveRecord だけ使う場合は、利用者側で `Gemfile` に `activerecord` を追加してください。
|
|
43
|
+
|
|
44
|
+
```ruby
|
|
45
|
+
gem 'jp_address_complement'
|
|
46
|
+
gem 'activerecord', '>= 7.0' # デフォルトリポジトリを使う場合のみ
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**CSV リポジトリや自前リポジトリだけ使う場合**
|
|
50
|
+
`JpAddressComplement.configure { |c| c.repository = ... }` でリポジトリを設定すれば、`activerecord` は不要です。gem の追加だけで利用できます。
|
|
51
|
+
|
|
42
52
|
Bundler を使わない場合:
|
|
43
53
|
|
|
44
54
|
```bash
|
|
45
55
|
gem install jp_address_complement
|
|
46
56
|
```
|
|
47
57
|
|
|
48
|
-
### 2.
|
|
58
|
+
### 2. テーブルの作成(デフォルトの ActiveRecord リポジトリを使う場合)
|
|
49
59
|
|
|
50
60
|
郵便番号データを格納するマイグレーションを生成し、マイグレートします。
|
|
51
61
|
|
|
@@ -54,7 +64,7 @@ rails g jp_address_complement:install
|
|
|
54
64
|
rails db:migrate
|
|
55
65
|
```
|
|
56
66
|
|
|
57
|
-
### 3.
|
|
67
|
+
### 3. 住所データのインポート(デフォルトの ActiveRecord リポジトリを使う場合)
|
|
58
68
|
|
|
59
69
|
日本郵便の KEN_ALL 形式 CSV(UTF-8 版 `utf_ken_all.csv`)をインポートする必要があります。
|
|
60
70
|
|
|
@@ -14,6 +14,8 @@ module JpAddressComplement
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
initializer 'jp_address_complement.setup_repository' do # steep:ignore
|
|
17
|
+
next unless defined?(ActiveRecord)
|
|
18
|
+
|
|
17
19
|
require_relative 'repositories/active_record_postal_code_repository'
|
|
18
20
|
require_relative 'models/postal_code'
|
|
19
21
|
JpAddressComplement.configuration.repository ||=
|
|
@@ -9,8 +9,13 @@ require_relative 'jp_address_complement/repositories/postal_code_repository'
|
|
|
9
9
|
require_relative 'jp_address_complement/searcher'
|
|
10
10
|
require_relative 'jp_address_complement/prefecture'
|
|
11
11
|
|
|
12
|
-
# Rails
|
|
13
|
-
|
|
12
|
+
# Rails が利用可能な場合のみ Railtie をロード(Gemfile に指定されていても require 前だと defined?(Rails) が false になり得るため、require を試す)
|
|
13
|
+
begin
|
|
14
|
+
require 'rails'
|
|
15
|
+
require_relative 'jp_address_complement/railtie'
|
|
16
|
+
rescue LoadError
|
|
17
|
+
# Rails が利用できない場合は Railtie をスキップ
|
|
18
|
+
end
|
|
14
19
|
|
|
15
20
|
module JpAddressComplement
|
|
16
21
|
class Error < StandardError; end
|
|
@@ -31,10 +36,19 @@ module JpAddressComplement
|
|
|
31
36
|
@configuration ||= Configuration.new
|
|
32
37
|
end
|
|
33
38
|
|
|
34
|
-
# PostalCode モデルの継承元。未設定時は ActiveRecord::Base
|
|
39
|
+
# PostalCode モデルの継承元。未設定時は ActiveRecord::Base(activerecord gem が利用可能な場合)。
|
|
40
|
+
# Gemfile に指定されていても require 前だと defined? が false になり得るため、未ロード時は require を試す。
|
|
35
41
|
# @rbs () -> Class
|
|
36
42
|
def base_record_class
|
|
37
|
-
configuration.postal_code_model_base
|
|
43
|
+
base = configuration.postal_code_model_base
|
|
44
|
+
return base if base
|
|
45
|
+
|
|
46
|
+
require 'active_record'
|
|
47
|
+
ActiveRecord::Base
|
|
48
|
+
rescue LoadError => e
|
|
49
|
+
raise Error,
|
|
50
|
+
'ActiveRecord is not available. Add gem "activerecord" to your Gemfile, or set ' \
|
|
51
|
+
"JpAddressComplement.configuration.postal_code_model_base. (#{e.message})"
|
|
38
52
|
end
|
|
39
53
|
|
|
40
54
|
# @rbs (Class) -> void
|
|
@@ -124,6 +138,10 @@ module JpAddressComplement
|
|
|
124
138
|
require_relative 'jp_address_complement/repositories/active_record_postal_code_repository'
|
|
125
139
|
require_relative 'jp_address_complement/models/postal_code'
|
|
126
140
|
Repositories::ActiveRecordPostalCodeRepository.new
|
|
141
|
+
rescue LoadError => e
|
|
142
|
+
raise Error,
|
|
143
|
+
'ActiveRecord is not loaded. Add gem "activerecord" to your Gemfile to use the default repository, ' \
|
|
144
|
+
"or set JpAddressComplement.configuration.repository to your own implementation. (#{e.message})"
|
|
127
145
|
end
|
|
128
146
|
end
|
|
129
147
|
end
|
|
@@ -17,7 +17,8 @@ module JpAddressComplement
|
|
|
17
17
|
# @return [Configuration]
|
|
18
18
|
def self.configuration: () -> Configuration
|
|
19
19
|
|
|
20
|
-
# PostalCode モデルの継承元。未設定時は ActiveRecord::Base
|
|
20
|
+
# PostalCode モデルの継承元。未設定時は ActiveRecord::Base(activerecord gem が利用可能な場合)。
|
|
21
|
+
# Gemfile に指定されていても require 前だと defined? が false になり得るため、未ロード時は require を試す。
|
|
21
22
|
# @rbs () -> Class
|
|
22
23
|
def self.base_record_class: () -> Class
|
|
23
24
|
|
metadata
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jp_address_complement
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- naokirin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-03-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: activerecord
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '7.0'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '7.0'
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: csv
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -39,33 +25,33 @@ dependencies:
|
|
|
39
25
|
- !ruby/object:Gem::Version
|
|
40
26
|
version: '3.0'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
28
|
+
name: rubyzip
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - ">="
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
33
|
+
version: '2.3'
|
|
48
34
|
type: :runtime
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - ">="
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
40
|
+
version: '2.3'
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
42
|
+
name: activerecord
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
58
44
|
requirements:
|
|
59
45
|
- - ">="
|
|
60
46
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
62
|
-
type: :
|
|
47
|
+
version: '7.0'
|
|
48
|
+
type: :development
|
|
63
49
|
prerelease: false
|
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
51
|
requirements:
|
|
66
52
|
- - ">="
|
|
67
53
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
54
|
+
version: '7.0'
|
|
69
55
|
- !ruby/object:Gem::Dependency
|
|
70
56
|
name: generator_spec
|
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -108,6 +94,20 @@ dependencies:
|
|
|
108
94
|
- - ">="
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
96
|
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: railties
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '7.0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '7.0'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: rake
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|