master_data_tool 0.4.0 → 0.8.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/Appraisals +6 -6
- data/LICENSE +21 -0
- data/README.md +16 -15
- data/docker-compose.yml +1 -1
- data/exe/master_data_tool +10 -2
- data/gemfiles/{rails52.gemfile → activerecord52.gemfile} +1 -1
- data/gemfiles/{rails61.gemfile → activerecord61.gemfile} +1 -1
- data/gemfiles/{rails70.gemfile → activerecord70.gemfile} +1 -1
- data/lib/master_data_tool/config.rb +2 -2
- data/lib/master_data_tool/dump/executor.rb +1 -1
- data/lib/master_data_tool/import/executor.rb +4 -2
- data/lib/master_data_tool/master_data_status.rb +1 -0
- data/lib/master_data_tool/report/printer.rb +8 -0
- data/lib/master_data_tool/version.rb +1 -1
- data/master_data_tool.gemspec +42 -0
- data/scripts/setup.sh +17 -0
- metadata +67 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64c169242f5fd0a16a4b5153dc597473146c057ddb72b8a1f8451cd9ec82032f
|
4
|
+
data.tar.gz: 65bd3c7a4bb1537a2853796d1947df6ab0665e9ddb737db6a913b6d21c1626a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe25e52351bd9d13f5fcd718bf21e49f297e82b99462b3666172e514beff19108dd8d49c17c9e91f5e5c6bd77f12b08575086b63f7ac46cf6e1601dafe086484
|
7
|
+
data.tar.gz: e072e9911a9449691480b85ba03dfbfb971cdaa9bc58c8dce5fb4dd60fce86ce2305fc5bcea1e39ef8efd3b4b6a4e6dfcd9a2547f064bcddcc9cf37c00883565
|
data/Appraisals
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
appraise '
|
2
|
-
gem '
|
1
|
+
appraise 'activerecord52' do
|
2
|
+
gem 'activerecord', '~> 5.2'
|
3
3
|
end
|
4
4
|
|
5
|
-
appraise '
|
6
|
-
gem '
|
5
|
+
appraise 'activerecord61' do
|
6
|
+
gem 'activerecord', '~> 6.1'
|
7
7
|
end
|
8
8
|
|
9
9
|
if RUBY_VERSION >= '2.7.0'
|
10
|
-
appraise '
|
11
|
-
gem '
|
10
|
+
appraise 'activerecord70' do
|
11
|
+
gem 'activerecord', '~> 7.0'
|
12
12
|
end
|
13
13
|
end
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2022 Takahiro Ooishi
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -35,13 +35,14 @@ Or install it yourself as:
|
|
35
35
|
|
36
36
|
### マスタデータの投入
|
37
37
|
|
38
|
-
| option | default | 内容
|
39
|
-
|----------------------| ---
|
40
|
-
| --dry-run | true | dry-runモードで実行する(データ変更は行わない)
|
41
|
-
| --verify | true | データ投入後に全テーブル・全レコードのバリデーションチェックを行う
|
42
|
-
| --only-import-tables | [] | 指定したテーブルのみデータ投入を行う
|
43
|
-
| --only-verify-tables | [] | 指定したテーブルのみ投入後のバリデーションチェックを行う
|
44
|
-
| --skip-no-change | true | CSVファイルに更新がないテーブルをスキップする
|
38
|
+
| option | default | 内容 |
|
39
|
+
|----------------------| --- |-----------------------------------|
|
40
|
+
| --dry-run | true | dry-runモードで実行する(データ変更は行わない) |
|
41
|
+
| --verify | true | データ投入後に全テーブル・全レコードのバリデーションチェックを行う |
|
42
|
+
| --only-import-tables | [] | 指定したテーブルのみデータ投入を行う |
|
43
|
+
| --only-verify-tables | [] | 指定したテーブルのみ投入後のバリデーションチェックを行う |
|
44
|
+
| --skip-no-change | true | CSVファイルに更新がないテーブルをスキップする |
|
45
|
+
| --silent | false | 結果の出力をやめる |
|
45
46
|
|
46
47
|
```bash
|
47
48
|
bundle exec master_data_tool import
|
@@ -55,7 +56,8 @@ bundle exec thor master_data_tool import \
|
|
55
56
|
--verify=true \
|
56
57
|
--only-import-tables="" \
|
57
58
|
--only-verify-tables="" \
|
58
|
-
--skip-no-change=true
|
59
|
+
--skip-no-change=true \
|
60
|
+
--silent=false
|
59
61
|
```
|
60
62
|
|
61
63
|
### ダンプ
|
@@ -155,24 +157,23 @@ docker-compose up -d
|
|
155
157
|
export DB_HOST=127.0.0.1
|
156
158
|
export DB_PORT=`docker port master_data_tool_mysql57 3306 | cut -f 2 -d ':'`
|
157
159
|
export DB_USERNAME=root
|
158
|
-
export DB_PASSWORD=
|
160
|
+
export DB_PASSWORD=f3WpxNreVT2NgQry
|
161
|
+
export DB_NAME=master_data_tool_test
|
159
162
|
```
|
160
163
|
|
161
164
|
- dockerでMySQLを立ち上げるたびにポートは変わるのでDB_PORTは都度設定する
|
162
165
|
- direnvを使っているならば `direnv reload` すればいい
|
163
166
|
|
164
167
|
```
|
165
|
-
|
166
|
-
RAILS_ENV=test bundle exec rake db:create
|
167
|
-
RAILS_ENV=test bundle exec rake db:migrate
|
168
|
+
./scripts/setup.sh
|
168
169
|
```
|
169
170
|
|
170
171
|
## rspec
|
171
172
|
|
172
173
|
```
|
173
|
-
bundle exec appraisal
|
174
|
-
bundle exec appraisal
|
175
|
-
bundle exec appraisal
|
174
|
+
bundle exec appraisal activerecord52 rspec
|
175
|
+
bundle exec appraisal activerecord61 rspec
|
176
|
+
bundle exec appraisal activerecord70 rspec
|
176
177
|
```
|
177
178
|
|
178
179
|
|
data/docker-compose.yml
CHANGED
data/exe/master_data_tool
CHANGED
@@ -14,6 +14,7 @@ module MasterDataTool
|
|
14
14
|
option :only_import_tables, default: [], type: :array
|
15
15
|
option :only_verify_tables, default: [], type: :array
|
16
16
|
option :skip_no_change, default: true, type: :boolean
|
17
|
+
option :silent, default: false, type: :boolean
|
17
18
|
desc 'import', 'import'
|
18
19
|
def import
|
19
20
|
dry_run = options[:dry_run]
|
@@ -21,13 +22,15 @@ module MasterDataTool
|
|
21
22
|
only_import_tables = options[:only_import_tables]
|
22
23
|
only_verify_tables = options[:only_verify_tables]
|
23
24
|
skip_no_change = options[:skip_no_change]
|
25
|
+
silent = options[:silent]
|
24
26
|
|
25
27
|
executor = MasterDataTool::Import::Executor.new(
|
26
28
|
dry_run: dry_run,
|
27
29
|
verify: verify,
|
28
30
|
only_import_tables: only_import_tables,
|
29
31
|
only_verify_tables: only_verify_tables,
|
30
|
-
skip_no_change: skip_no_change
|
32
|
+
skip_no_change: skip_no_change,
|
33
|
+
silent: silent
|
31
34
|
)
|
32
35
|
executor.execute
|
33
36
|
end
|
@@ -49,7 +52,12 @@ module MasterDataTool
|
|
49
52
|
ignore_column_names: ignore_column_names,
|
50
53
|
verbose: verbose
|
51
54
|
)
|
52
|
-
executor.execute
|
55
|
+
errors = executor.execute
|
56
|
+
|
57
|
+
return if errors.empty?
|
58
|
+
|
59
|
+
message = errors.map { |error| "table:#{error.table}\tmessage:#{error.exception.message}" }.join("\n")
|
60
|
+
raise message
|
53
61
|
end
|
54
62
|
end
|
55
63
|
end
|
@@ -11,10 +11,10 @@ module MasterDataTool
|
|
11
11
|
|
12
12
|
def self.default_config
|
13
13
|
new.tap do |config|
|
14
|
-
config.master_data_dir = Rails.root.join('db/fixtures')
|
14
|
+
config.master_data_dir = nil # Rails.root.join('db/fixtures')
|
15
15
|
config.dump_ignore_tables = %w[]
|
16
16
|
config.dump_ignore_columns = %w[]
|
17
|
-
config.logger =
|
17
|
+
config.logger = Logger.new(nil)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -3,13 +3,15 @@
|
|
3
3
|
module MasterDataTool
|
4
4
|
module Import
|
5
5
|
class Executor
|
6
|
-
def initialize(dry_run: true, verify: true, only_import_tables: [], only_verify_tables: [], skip_no_change: true, report_printer: MasterDataTool::Report::DefaultPrinter.new)
|
6
|
+
def initialize(dry_run: true, verify: true, only_import_tables: [], only_verify_tables: [], skip_no_change: true, silent: false, report_printer: MasterDataTool::Report::DefaultPrinter.new)
|
7
7
|
@dry_run = dry_run
|
8
8
|
@verify = verify
|
9
9
|
@only_import_tables = Array(only_import_tables)
|
10
10
|
@only_verify_tables = Array(only_verify_tables)
|
11
11
|
@skip_no_change = skip_no_change
|
12
|
+
@silent = silent
|
12
13
|
@report_printer = report_printer
|
14
|
+
@report_printer.silent = silent
|
13
15
|
end
|
14
16
|
|
15
17
|
def execute
|
@@ -38,7 +40,7 @@ module MasterDataTool
|
|
38
40
|
table_name = MasterDataTool.resolve_table_name(path)
|
39
41
|
load_skip = load_skip_table?(table_name, path)
|
40
42
|
|
41
|
-
model_klass =
|
43
|
+
model_klass = Object.const_get(table_name.classify)
|
42
44
|
master_data = MasterData.new(path, model_klass)
|
43
45
|
master_data.load unless load_skip
|
44
46
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/master_data_tool/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "master_data_tool"
|
7
|
+
spec.version = MasterDataTool::VERSION
|
8
|
+
spec.authors = ["Takahiro Ooishi"]
|
9
|
+
spec.email = ["taka0125@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "マスタデータの管理ツール"
|
12
|
+
spec.description = "システムが稼働する上で最初から必要なデータ(マスタデータ)を管理するツールです。"
|
13
|
+
spec.homepage = "https://github.com/taka0125/master_data_tool"
|
14
|
+
spec.required_ruby_version = ">= 2.6.0"
|
15
|
+
|
16
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
17
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
18
|
+
|
19
|
+
# Specify which files should be added to the gem when it is released.
|
20
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
21
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
22
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
23
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
24
|
+
end
|
25
|
+
end
|
26
|
+
spec.bindir = "exe"
|
27
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
28
|
+
spec.require_paths = ["lib"]
|
29
|
+
|
30
|
+
spec.add_development_dependency 'rspec'
|
31
|
+
spec.add_development_dependency 'mysql2'
|
32
|
+
spec.add_development_dependency 'psych', '~> 3.1'
|
33
|
+
spec.add_development_dependency 'appraisal'
|
34
|
+
spec.add_development_dependency 'ridgepole'
|
35
|
+
spec.add_development_dependency 'database_cleaner-active_record'
|
36
|
+
spec.add_development_dependency 'standalone_activerecord_boot_loader'
|
37
|
+
|
38
|
+
spec.add_dependency 'activerecord', '>= 5.1.7'
|
39
|
+
spec.add_dependency 'activesupport'
|
40
|
+
spec.add_dependency 'thor'
|
41
|
+
spec.add_dependency 'activerecord-import'
|
42
|
+
end
|
data/scripts/setup.sh
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -ex
|
3
|
+
|
4
|
+
CURRENT=$(cd $(dirname $0);pwd)
|
5
|
+
|
6
|
+
mysql \
|
7
|
+
-u ${DB_USERNAME} \
|
8
|
+
-h ${DB_HOST} \
|
9
|
+
-p${DB_PASSWORD} \
|
10
|
+
--port ${DB_PORT} \
|
11
|
+
-e "CREATE DATABASE IF NOT EXISTS ${DB_NAME}"
|
12
|
+
|
13
|
+
bundle exec ridgepole \
|
14
|
+
-c ${CURRENT}/../spec/dummy-common/config/database.yml \
|
15
|
+
--apply \
|
16
|
+
-f ${CURRENT}/../spec/dummy-common/db/Schemafile \
|
17
|
+
-E test
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: master_data_tool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takahiro Ooishi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: rspec
|
14
|
+
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
@@ -67,7 +67,49 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: ridgepole
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: database_cleaner-active_record
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: standalone_activerecord_boot_loader
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: activerecord
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
72
114
|
requirements:
|
73
115
|
- - ">="
|
@@ -80,6 +122,20 @@ dependencies:
|
|
80
122
|
- - ">="
|
81
123
|
- !ruby/object:Gem::Version
|
82
124
|
version: 5.1.7
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: activesupport
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
83
139
|
- !ruby/object:Gem::Dependency
|
84
140
|
name: thor
|
85
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,6 +175,7 @@ files:
|
|
119
175
|
- ".rspec"
|
120
176
|
- Appraisals
|
121
177
|
- Gemfile
|
178
|
+
- LICENSE
|
122
179
|
- README.md
|
123
180
|
- Rakefile
|
124
181
|
- bin/console
|
@@ -126,9 +183,9 @@ files:
|
|
126
183
|
- docker-compose.yml
|
127
184
|
- exe/master_data_tool
|
128
185
|
- gemfiles/.bundle/config
|
129
|
-
- gemfiles/
|
130
|
-
- gemfiles/
|
131
|
-
- gemfiles/
|
186
|
+
- gemfiles/activerecord52.gemfile
|
187
|
+
- gemfiles/activerecord61.gemfile
|
188
|
+
- gemfiles/activerecord70.gemfile
|
132
189
|
- lib/generators/master_data_tool/install/install_generator.rb
|
133
190
|
- lib/generators/master_data_tool/install/templates/create_master_data_statuses.rb.erb
|
134
191
|
- lib/master_data_tool.rb
|
@@ -148,6 +205,8 @@ files:
|
|
148
205
|
- lib/master_data_tool/report/verify_report.rb
|
149
206
|
- lib/master_data_tool/version.rb
|
150
207
|
- log/test.log
|
208
|
+
- master_data_tool.gemspec
|
209
|
+
- scripts/setup.sh
|
151
210
|
- sig/master_data_tool.rbs
|
152
211
|
homepage: https://github.com/taka0125/master_data_tool
|
153
212
|
licenses: []
|
@@ -169,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
228
|
- !ruby/object:Gem::Version
|
170
229
|
version: '0'
|
171
230
|
requirements: []
|
172
|
-
rubygems_version: 3.
|
231
|
+
rubygems_version: 3.2.22
|
173
232
|
signing_key:
|
174
233
|
specification_version: 4
|
175
234
|
summary: マスタデータの管理ツール
|