master_data_tool 0.3.0 → 0.7.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 +13 -0
- data/README.md +44 -8
- data/docker-compose.yml +19 -0
- data/exe/master_data_tool +10 -2
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/activerecord52.gemfile +9 -0
- data/gemfiles/activerecord61.gemfile +9 -0
- data/gemfiles/activerecord70.gemfile +9 -0
- 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/log/test.log +0 -0
- data/master_data_tool.gemspec +41 -0
- data/scripts/setup.sh +17 -0
- metadata +67 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a92262ac7a93ea8237ec6740589c865ca6bce067f1fba4a48403a6f3cd42a379
|
4
|
+
data.tar.gz: d738dce7d637aa27ae2b9b27e9ed1a7d4ae119e41cf240b24f874e86cf6cde4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9ebcb430a6d91175cff4e36a512958b30ac5318639f855d4f82e8ab2a74c147a0eeec25f90c5dc97b11a5c3ab7c81b7e1666bee5fee5ad046a8d4cbfcb9a5bc
|
7
|
+
data.tar.gz: 76587a7eb98d0b2b0ac28f2cbf9c59e649c05a1d456ea4011cd9f83daa89c9193509b7a25c89780b5e5ec7a6e25cc4f79b31745f3a6c70a619eb5c271915c2b2
|
data/Appraisals
ADDED
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
|
### ダンプ
|
@@ -141,6 +143,40 @@ grep 'operation:import' /tmp/dry-run.txt | grep 'label:detail' | grep 'status:ne
|
|
141
143
|
|
142
144
|
- upsert_allに移行する
|
143
145
|
|
146
|
+
## Test
|
147
|
+
|
148
|
+
docker-composeでMySQLを立ち上げてテストを実行する。
|
149
|
+
|
150
|
+
```
|
151
|
+
docker-compose up -d
|
152
|
+
```
|
153
|
+
|
154
|
+
以下のENVを設定すること。
|
155
|
+
|
156
|
+
```
|
157
|
+
export DB_HOST=127.0.0.1
|
158
|
+
export DB_PORT=`docker port master_data_tool_mysql57 3306 | cut -f 2 -d ':'`
|
159
|
+
export DB_USERNAME=root
|
160
|
+
export DB_PASSWORD=f3WpxNreVT2NgQry
|
161
|
+
export DB_NAME=master_data_tool_test
|
162
|
+
```
|
163
|
+
|
164
|
+
- dockerでMySQLを立ち上げるたびにポートは変わるのでDB_PORTは都度設定する
|
165
|
+
- direnvを使っているならば `direnv reload` すればいい
|
166
|
+
|
167
|
+
```
|
168
|
+
./scripts/setup.sh
|
169
|
+
```
|
170
|
+
|
171
|
+
## rspec
|
172
|
+
|
173
|
+
```
|
174
|
+
bundle exec appraisal activerecord52 rspec
|
175
|
+
bundle exec appraisal activerecord61 rspec
|
176
|
+
bundle exec appraisal activerecord70 rspec
|
177
|
+
```
|
178
|
+
|
179
|
+
|
144
180
|
## Contributing
|
145
181
|
|
146
182
|
Bug reports and pull requests are welcome on GitHub at https://github.com/taka0125/master_data_tool.
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
version: '3.9'
|
2
|
+
|
3
|
+
x-mysql: &mysql
|
4
|
+
image: mysql:5.7
|
5
|
+
container_name: master_data_tool_mysql57
|
6
|
+
environment:
|
7
|
+
MYSQL_ROOT_PASSWORD: 'f3WpxNreVT2NgQry'
|
8
|
+
platform: linux/x86_64
|
9
|
+
ports:
|
10
|
+
- 127.0.0.1::3306
|
11
|
+
volumes:
|
12
|
+
- mysql:/var/lib/mysql
|
13
|
+
|
14
|
+
services:
|
15
|
+
mysql:
|
16
|
+
<<: *mysql
|
17
|
+
|
18
|
+
volumes:
|
19
|
+
mysql:
|
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
|
|
data/log/test.log
ADDED
File without changes
|
@@ -0,0 +1,41 @@
|
|
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
|
+
|
37
|
+
spec.add_dependency 'activerecord', '>= 5.1.7'
|
38
|
+
spec.add_dependency 'activesupport'
|
39
|
+
spec.add_dependency 'thor'
|
40
|
+
spec.add_dependency 'activerecord-import'
|
41
|
+
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.7.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
|
- - ">="
|
@@ -25,21 +25,35 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: mysql2
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: psych
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.1'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: appraisal
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - ">="
|
@@ -53,21 +67,35 @@ dependencies:
|
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: ridgepole
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- - "
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
75
|
+
version: '0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- - "
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
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'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
98
|
+
name: activerecord
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
101
|
- - ">="
|
@@ -80,6 +108,20 @@ dependencies:
|
|
80
108
|
- - ">="
|
81
109
|
- !ruby/object:Gem::Version
|
82
110
|
version: 5.1.7
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: activesupport
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: thor
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,12 +159,18 @@ extensions: []
|
|
117
159
|
extra_rdoc_files: []
|
118
160
|
files:
|
119
161
|
- ".rspec"
|
162
|
+
- Appraisals
|
120
163
|
- Gemfile
|
121
164
|
- README.md
|
122
165
|
- Rakefile
|
123
166
|
- bin/console
|
124
167
|
- bin/setup
|
168
|
+
- docker-compose.yml
|
125
169
|
- exe/master_data_tool
|
170
|
+
- gemfiles/.bundle/config
|
171
|
+
- gemfiles/activerecord52.gemfile
|
172
|
+
- gemfiles/activerecord61.gemfile
|
173
|
+
- gemfiles/activerecord70.gemfile
|
126
174
|
- lib/generators/master_data_tool/install/install_generator.rb
|
127
175
|
- lib/generators/master_data_tool/install/templates/create_master_data_statuses.rb.erb
|
128
176
|
- lib/master_data_tool.rb
|
@@ -141,6 +189,9 @@ files:
|
|
141
189
|
- lib/master_data_tool/report/printer.rb
|
142
190
|
- lib/master_data_tool/report/verify_report.rb
|
143
191
|
- lib/master_data_tool/version.rb
|
192
|
+
- log/test.log
|
193
|
+
- master_data_tool.gemspec
|
194
|
+
- scripts/setup.sh
|
144
195
|
- sig/master_data_tool.rbs
|
145
196
|
homepage: https://github.com/taka0125/master_data_tool
|
146
197
|
licenses: []
|
@@ -162,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
213
|
- !ruby/object:Gem::Version
|
163
214
|
version: '0'
|
164
215
|
requirements: []
|
165
|
-
rubygems_version: 3.
|
216
|
+
rubygems_version: 3.2.22
|
166
217
|
signing_key:
|
167
218
|
specification_version: 4
|
168
219
|
summary: マスタデータの管理ツール
|