master_data_tool 0.17.0 → 0.19.1

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
  SHA256:
3
- metadata.gz: 13d917fbfac12aeef06fb5d23478b0b7a72cb7d322307650097cf7b9bbfc2154
4
- data.tar.gz: 55e5a9eaf6fb6605e3c81db67e416b9b194ba38dd68f7f52646e2d6aed1f4bb4
3
+ metadata.gz: 6c86a9d847de2f8f125153cd284d3ea10120d3c0aad5ed27e9ccbf24a01be848
4
+ data.tar.gz: fa2eadc1507bb37376083a180b774a78dcef234edb10137c2dcc76c5eb7f9567
5
5
  SHA512:
6
- metadata.gz: c786f48fffb282a462c5daff7dc238c2021113d79590b6bcfc3a5f9d001a153e0db298b958f99548f12d0f4c09f69ed7b254c3b03e7e29655bc67d3b299c2476
7
- data.tar.gz: cf6f31dbe36c37e82ac9fbed099b02e93ac721fc31676288cc3f5b2905502a85b2e919517f0bdc60e3a793f5ab525de4bef597c335ac254b53c168eb7f0a12b1
6
+ metadata.gz: b09a34de53816d663d2c527151fa89065cb4c0bb6526c91f999ff32062f4bec5022d63ec0f6120abbf7922a8ab1844129d3d94e5661a293fe0d37f613c4c0834
7
+ data.tar.gz: ef198841455751e21559c3759ea70985f0d49b49d4688c175318809317a6bf6cb2544b3fdde4125ac2f8a64db963e4e3063ebb3726ecfcba918fa94fa39be676
data/Appraisals CHANGED
@@ -1,13 +1,17 @@
1
- appraise 'activerecord52' do
2
- gem 'activerecord', '~> 5.2'
1
+ appraise 'activerecord5.2' do
2
+ gem 'activerecord', '~> 5.2.0'
3
3
  end
4
4
 
5
- appraise 'activerecord61' do
6
- gem 'activerecord', '~> 6.1'
5
+ appraise 'activerecord6.0' do
6
+ gem 'activerecord', '~> 6.0.0'
7
+ end
8
+
9
+ appraise 'activerecord6.1' do
10
+ gem 'activerecord', '~> 6.1.0'
7
11
  end
8
12
 
9
13
  if RUBY_VERSION >= '2.7.0'
10
- appraise 'activerecord70' do
11
- gem 'activerecord', '~> 7.0'
14
+ appraise 'activerecord7.0' do
15
+ gem 'activerecord', '~> 7.0.0'
12
16
  end
13
17
  end
data/README.md CHANGED
@@ -1,6 +1,9 @@
1
1
  # MasterDataTool
2
2
 
3
3
  [![Build Status](https://github.com/taka0125/master_data_tool/workflows/Ruby/badge.svg?branch=main)](https://github.com/taka0125/master_data_tool/actions)
4
+ [![Gem Version](https://badge.fury.io/rb/master_data_tool.svg)](https://badge.fury.io/rb/master_data_tool)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/5fc8420c4fe83a2e6c92/maintainability)](https://codeclimate.com/github/taka0125/master_data_tool/maintainability)
6
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/5fc8420c4fe83a2e6c92/test_coverage)](https://codeclimate.com/github/taka0125/master_data_tool/test_coverage)
4
7
 
5
8
  システムが稼働する上で最初から必要なデータ(マスタデータ)を管理するツール
6
9
 
@@ -35,18 +38,18 @@ Or install it yourself as:
35
38
 
36
39
  ### マスタデータの投入
37
40
 
38
- | option | default | 内容 |
39
- |----------------------| --- |-----------------------------------------------------------------|
40
- | --dry-run | true | dry-runモードで実行する(データ変更は行わない) |
41
- | --verify | true | データ投入後に全テーブル・全レコードのバリデーションチェックを行う |
42
- | --only-import-tables | [] | 指定したテーブルのみデータ投入を行う |
43
- | --except-import-tables | [] | 指定したテーブルのデータ投入を行わない |
44
- | --only-verify-tables | [] | 指定したテーブルのみ投入後のバリデーションチェックを行う |
45
- | --except-verify-tables | [] | 指定したテーブルのバリデーションチェックを行わない |
46
- | --skip-no-change | true | CSVファイルに更新がないテーブルをスキップする |
47
- | --silent | false | 結果の出力をやめる |
41
+ | option | default | 内容 |
42
+ |---------------------------------| --- |-----------------------------------------------------------------|
43
+ | --dry-run | true | dry-runモードで実行する(データ変更は行わない) |
44
+ | --verify | true | データ投入後に全テーブル・全レコードのバリデーションチェックを行う |
45
+ | --only-import-tables | [] | 指定したテーブルのみデータ投入を行う |
46
+ | --except-import-tables | [] | 指定したテーブルのデータ投入を行わない |
47
+ | --only-verify-tables | [] | 指定したテーブルのみ投入後のバリデーションチェックを行う |
48
+ | --except-verify-tables | [] | 指定したテーブルのバリデーションチェックを行わない |
49
+ | --skip-no-change | true | CSVファイルに更新がないテーブルをスキップする |
50
+ | --silent | false | 結果の出力をやめる |
48
51
  | --delete-all-ignore-foreign-key | false | 外部キー制約を無視してレコードを消すかどうか |
49
- | --override_identifier | nil | fixtures/#{override_identifier} のディレクトリにある内容でfixturesを上書きして投入する |
52
+ | --override-identifier | nil | fixtures/#{override_identifier} のディレクトリにある内容でfixturesを上書きして投入する |
50
53
 
51
54
  ```bash
52
55
  bundle exec master_data_tool import
@@ -4,6 +4,6 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
6
  gem "rspec", "~> 3.0"
7
- gem "activerecord", "~> 5.2"
7
+ gem "activerecord", "~> 5.2.0"
8
8
 
9
9
  gemspec path: "../"
@@ -4,6 +4,6 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
6
  gem "rspec", "~> 3.0"
7
- gem "activerecord", "~> 6.1"
7
+ gem "activerecord", "~> 6.0.0"
8
8
 
9
9
  gemspec path: "../"
@@ -4,6 +4,6 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
6
  gem "rspec", "~> 3.0"
7
- gem "activerecord", "~> 7.0"
7
+ gem "activerecord", "~> 6.1.0"
8
8
 
9
9
  gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake", "~> 13.0"
6
+ gem "rspec", "~> 3.0"
7
+ gem "activerecord", "~> 7.0.0"
8
+
9
+ gemspec path: "../"
@@ -9,12 +9,16 @@ module MasterDataTool
9
9
  config_accessor :dump_ignore_columns
10
10
  config_accessor :default_import_options
11
11
  config_accessor :logger
12
+ config_accessor :preload_associations
13
+ config_accessor :eager_load_associations
12
14
 
13
15
  def initialize
14
16
  self.master_data_dir = nil
15
17
  self.dump_ignore_tables = %w[]
16
18
  self.dump_ignore_columns = %w[]
17
19
  self.default_import_options = {}
20
+ self.preload_associations = {} # key: Class, value: associations
21
+ self.eager_load_associations = {} # key: Class, value: associations
18
22
  self.logger = Logger.new(nil)
19
23
  end
20
24
  end
@@ -27,11 +27,13 @@ module MasterDataTool
27
27
  @override_identifier = override_identifier
28
28
  @report_printer = report_printer
29
29
  @report_printer.silent = silent
30
+ @master_data_statuses = []
30
31
  end
31
32
 
32
33
  def execute
33
34
  ApplicationRecord.transaction do
34
35
  print_execute_options
36
+ load_master_data_statuses
35
37
 
36
38
  master_data_collection = build_master_data_collection
37
39
 
@@ -51,6 +53,8 @@ module MasterDataTool
51
53
 
52
54
  private
53
55
 
56
+ attr_reader :master_data_statuses
57
+
54
58
  def print_execute_options
55
59
  return if @silent
56
60
 
@@ -115,7 +119,10 @@ module MasterDataTool
115
119
  return true if import_skip_table?(master_data_file.table_name)
116
120
  return false unless @skip_no_change
117
121
 
118
- !MasterDataTool::MasterDataStatus.master_data_will_change?(master_data_file)
122
+ master_data_status = master_data_statuses.dig(master_data_file.table_name)
123
+ return false unless master_data_status
124
+
125
+ !master_data_status.will_change?(master_data_file)
119
126
  end
120
127
 
121
128
  def import_skip_table?(table_name)
@@ -152,6 +159,10 @@ module MasterDataTool
152
159
  pattern = Pathname.new(MasterDataTool.config.master_data_dir).join(@override_identifier).join('*.csv').to_s
153
160
  Pathname.glob(pattern).select(&:file?)
154
161
  end
162
+
163
+ def load_master_data_statuses
164
+ @master_data_statuses = MasterDataTool::MasterDataStatus.fetch_all
165
+ end
155
166
  end
156
167
  end
157
168
  end
@@ -135,12 +135,20 @@ module MasterDataTool
135
135
 
136
136
  def verify!(ignore_fail: false)
137
137
  MasterDataTool::Report::VerifyReport.new(self).tap do |report|
138
- @model_klass.all.find_each do |record|
138
+ scoped = @model_klass.all
139
+ scoped = scoped.preload(preload_associations) if preload_associations
140
+ scoped = scoped.eager_load(eager_load_associations) if eager_load_associations
141
+
142
+ scoped.find_each do |record|
139
143
  valid = record.valid?
140
144
  report.append(MasterDataTool::Report::VerifyReport.build_verify_record_report(self, record, valid))
145
+ next if valid
141
146
  next if ignore_fail
142
147
 
143
- raise MasterDataTool::VerifyFailed.new("[#{table_name}] id = #{record.id} is invalid") unless valid
148
+ e = MasterDataTool::VerifyFailed.new("[#{table_name}] id = #{record.id} is invalid")
149
+ e.errors = record.errors
150
+
151
+ raise e
144
152
  end
145
153
  end
146
154
  end
@@ -154,6 +162,14 @@ module MasterDataTool
154
162
 
155
163
  private
156
164
 
165
+ def preload_associations
166
+ @preload_associations ||= MasterDataTool.config.preload_associations.dig(@model_klass.to_s.to_sym)
167
+ end
168
+
169
+ def eager_load_associations
170
+ @eager_load_associations ||= MasterDataTool.config.eager_load_associations.dig(@model_klass.to_s.to_sym)
171
+ end
172
+
157
173
  def build_records_from_csv(csv, old_records_by_id)
158
174
  {}.tap do |records|
159
175
  csv.each do |row|
@@ -14,7 +14,17 @@ module MasterDataTool
14
14
  validates :version,
15
15
  presence: true
16
16
 
17
+ def will_change?(master_data_file)
18
+ raise unless name == master_data_file.table_name
19
+
20
+ version != self.class.decide_version(master_data_file.path)
21
+ end
22
+
17
23
  class << self
24
+ def fetch_all
25
+ all.index_by(&:name)
26
+ end
27
+
18
28
  def build(master_data_file)
19
29
  version = decide_version(master_data_file.path)
20
30
  new(name: MasterDataTool.resolve_table_name(master_data_file.path, master_data_file.override_identifier), version: version)
@@ -23,15 +33,10 @@ module MasterDataTool
23
33
  def import_records!(records, dry_run: true)
24
34
  if dry_run
25
35
  pp records
26
- else
27
- import!(records, validate: true, on_duplicate_key_update: %w[name version], timestamps: true)
36
+ return
28
37
  end
29
- end
30
38
 
31
- # @param [MasterDataTool::MasterDataFile] master_data_file
32
- def master_data_will_change?(master_data_file)
33
- new_version = decide_version(master_data_file.path)
34
- !where(name: master_data_file.table_name, version: new_version).exists?
39
+ import!(records, validate: true, on_duplicate_key_update: %w[name version], timestamps: true)
35
40
  end
36
41
 
37
42
  def decide_version(csv_path)
@@ -7,6 +7,7 @@ module MasterDataTool
7
7
 
8
8
  def print(message)
9
9
  return if @silent
10
+ return if message.blank?
10
11
 
11
12
  MasterDataTool.config.logger.info message
12
13
  puts message
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MasterDataTool
4
- VERSION = "0.17.0"
4
+ VERSION = "0.19.1"
5
5
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'csv'
4
+ require 'socket'
4
5
  require_relative "master_data_tool/version"
5
6
  require_relative "master_data_tool/config"
6
7
  require_relative "master_data_tool/master_data_status"
@@ -15,9 +16,13 @@ require_relative "master_data_tool/import"
15
16
  module MasterDataTool
16
17
  class Error < StandardError; end
17
18
  class DryRunError < StandardError; end
18
- class VerifyFailed < StandardError; end
19
19
  class NotLoadedError < StandardError; end
20
20
 
21
+ class VerifyFailed < StandardError
22
+ attr_accessor :errors
23
+ delegate :full_messages, to: :errors
24
+ end
25
+
21
26
  class << self
22
27
  def config
23
28
  @config ||= Config.new
@@ -33,7 +33,8 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency 'appraisal'
34
34
  spec.add_development_dependency 'ridgepole'
35
35
  spec.add_development_dependency 'database_cleaner-active_record'
36
- spec.add_development_dependency 'standalone_activerecord_boot_loader'
36
+ spec.add_development_dependency 'standalone_activerecord_boot_loader', '>= 0.3 '
37
+ spec.add_development_dependency 'simplecov'
37
38
 
38
39
  spec.add_dependency 'activerecord', '>= 5.1.7'
39
40
  spec.add_dependency 'activesupport'
@@ -0,0 +1,11 @@
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 "DROP DATABASE ${DB_NAME}"
@@ -1,4 +1,230 @@
1
+ # TypeProf 0.21.3
2
+
3
+ # Classes
1
4
  module MasterDataTool
2
5
  VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
6
+ self.@config: Config
7
+
8
+ def self.config: -> Config
9
+ def self.configure: -> untyped
10
+ def self.resolve_table_name: (Pathname csv_path, String? override_identifier) -> String
11
+
12
+ class Config
13
+ def initialize: -> void
14
+ end
15
+
16
+ class MasterDataStatus
17
+ def will_change?: (MasterDataFile master_data_file) -> bool
18
+ def self.fetch_all: -> Hash[String,MasterDataStatus]
19
+ def self.build: (MasterDataFile master_data_file) -> MasterDataStatus
20
+ def self.import_records!: (Array[MasterDataStatus] records, dry_run: bool) -> Array[MasterDataStatus]
21
+ def self.master_data_will_change?: (MasterDataFile master_data_file) -> bool
22
+ def self.decide_version: (Pathname csv_path) -> String
23
+ end
24
+
25
+ class MasterDataFile
26
+ attr_reader table_name: String
27
+ attr_reader path: Pathname
28
+ attr_reader override_identifier: String?
29
+ def initialize: (String table_name, Pathname path, String? override_identifier) -> void
30
+ def self.build: (Pathname path, String? override_identifier) -> MasterDataFile
31
+ def basename: -> Pathname
32
+ def ==: (untyped other) -> bool
33
+ alias eql? ==
34
+ def hash: -> Integer
35
+ end
36
+
37
+ class MasterDataFileCollection
38
+ @override_identifier: String?
39
+ @collection: Array[MasterDataFile]
40
+
41
+ def initialize: (override_identifier: String?) -> void
42
+ def each: ?{ -> Array[MasterDataFile] } -> Enumerator[bot, untyped]
43
+ def to_a: -> Array[MasterDataFile]
44
+
45
+ private
46
+ def build: -> Array[MasterDataFile]
47
+ def extract_master_data_csv_paths: -> Array[MasterDataFile]
48
+ def overridden_master_data_csv_paths: -> Array[MasterDataFile]
49
+ end
50
+
51
+ class MasterData
52
+ @loaded: bool
53
+ @affected: bool
54
+ @preload_associations: Array[untyped]
55
+ @eager_load_associations: Array[untyped]
56
+
57
+ attr_reader master_data_file: MasterDataFile
58
+ attr_reader model_klass: untyped
59
+ attr_reader columns: Array[String]
60
+ attr_reader new_records: Array[untyped]
61
+ def new_records: -> Array[untyped]
62
+ attr_reader updated_records: Array[untyped]
63
+ def updated_records: -> Array[untyped]
64
+ attr_reader no_change_records: Array[untyped]
65
+ def no_change_records: -> Array[untyped]
66
+ attr_reader deleted_records: Array[untyped]
67
+ def deleted_records: -> Array[untyped]
68
+ attr_reader before_count: Integer
69
+ def before_count: -> Integer
70
+ attr_reader after_count: Integer
71
+ def after_count: -> Integer
72
+ def initialize: (MasterDataFile master_data_file, untyped model_klass) -> void
73
+ def self.build: (MasterDataFile master_data_file, ?load: bool) -> MasterData
74
+ def basename: -> Pathname
75
+ def load: -> true
76
+ def import_records: -> Array[untyped]
77
+ def affected_records: -> Array[untyped]
78
+ def loaded?: -> bool
79
+ def affected?: -> bool?
80
+ def table_name: -> String
81
+ def import!: (?dry_run: true, ?delete_all_ignore_foreign_key: false) -> Report::ImportReport
82
+ def verify!: (?ignore_fail: bool) -> Report::VerifyReport
83
+ def print_affected_table: -> Report::PrintAffectedTableReport?
84
+
85
+ private
86
+ def preload_associations: -> Array[untyped]
87
+ def eager_load_associations: -> Array[untyped]
88
+ def build_records_from_csv: (Array[Array[String?]] csv, Hash[Integer, untyped] old_records_by_id) -> Hash[Integer, untyped]
89
+ def enable_foreign_key_checks: -> untyped
90
+ def disable_foreign_key_checks: -> untyped
91
+ end
92
+
93
+ class MasterDataCollection
94
+ @collection: Array[MasterData]
95
+
96
+ def initialize: -> void
97
+ def append: (MasterData master_data) -> Array[MasterData]
98
+ def each: ?{ (MasterData) -> (Array[MasterDataStatus | {operation: :verify, table_name: untyped, valid: untyped, id: untyped}]?) } -> (Array[MasterData] | Enumerator[MasterData, untyped] | Enumerator[untyped, untyped])
99
+ def to_a: -> Array[MasterData]
100
+ end
101
+
102
+ module Report
103
+ module Printer
104
+ attr_accessor silent: false
105
+ def initialize: (?silent: false) -> void
106
+ def print: (String message) -> nil
107
+ end
108
+
109
+ class DefaultPrinter
110
+ include Printer
111
+
112
+ def print: (String message) -> nil
113
+ end
114
+
115
+ module Core
116
+ def initialize: (MasterData master_data) -> void
117
+ def print: (Printer printer) -> untyped
118
+
119
+ private
120
+ def convert_to_ltsv: ({operation: :affected_table | :verify, table_name: untyped, valid: untyped, id: untyped} items) -> String
121
+ end
122
+
123
+ class ImportReport
124
+ include Core
125
+ @master_data: MasterData
126
+
127
+ attr_reader reports: Array[untyped]
128
+ def reports: -> Array[untyped]
129
+ def print: (Printer printer) -> untyped
130
+
131
+ private
132
+ def count_report: -> Hash[Symbol, Array[Hash[Symbol, untyped]]]
133
+ def new_records_report: -> Hash[Symbol, Array[Hash[Symbol, untyped]]]
134
+ def updated_records_report: -> Hash[Symbol, Array[Hash[Symbol, untyped]]]
135
+ def no_change_records_report: -> Hash[Symbol, Array[Hash[Symbol, untyped]]]
136
+ def deleted_records_report: -> Hash[Symbol, Array[Hash[Symbol, untyped]]]
137
+ end
138
+
139
+ class VerifyReport
140
+ include Core
141
+ @master_data: MasterData
142
+
143
+ attr_reader reports: Array[{operation: :verify, table_name: untyped, valid: untyped, id: untyped}]
144
+ def initialize: (MasterData master_data) -> void
145
+ def append: ({operation: :verify, table_name: untyped, valid: untyped, id: untyped} verify_record_report) -> Array[{operation: :verify, table_name: untyped, valid: untyped, id: untyped}]
146
+ def print: (Printer printer) -> Array[{operation: :verify, table_name: untyped, valid: untyped, id: untyped}]
147
+ def self.build_verify_record_report: (MasterData master_data, untyped record, untyped valid) -> {operation: :verify, table_name: untyped, valid: untyped, id: untyped}
148
+ end
149
+
150
+ class PrintAffectedTableReport
151
+ include Core
152
+ @master_data: MasterData
153
+
154
+ def print: (Printer printer) -> nil
155
+ end
156
+ end
157
+
158
+ module Dump
159
+ class Executor
160
+ DEFAULT_IGNORE_TABLES: [String, String, String]
161
+ DEFAULT_IGNORE_COLUMNS: [String, String]
162
+ @ignore_empty_table: bool
163
+ @ignore_tables: Array[String]
164
+ @ignore_column_names: Array[String]
165
+ @only_tables: Array[String]
166
+ @verbose: bool
167
+
168
+ def initialize: (ignore_empty_table: bool, ignore_tables: Array[String], ignore_column_names: Array[String], only_tables: Array[String], verbose: bool) -> void
169
+ def execute: -> Array[untyped]
170
+
171
+ private
172
+ def print_message: (String message) -> nil
173
+ def dump_to_csv: (untyped table) -> nil
174
+ def ignore?: (untyped model_klass) -> false
175
+
176
+ class Error < Struct[untyped]
177
+ attr_accessor table(): untyped
178
+ attr_accessor exception(): nil
179
+ end
180
+ end
181
+ end
182
+
183
+ module Import
184
+ class Executor
185
+ @dry_run: bool
186
+ @verify: bool
187
+ @only_import_tables: Array[String]
188
+ @except_import_tables: Array[String]
189
+ @only_verify_tables: Array[String]
190
+ @except_verify_tables: Array[String]
191
+ @skip_no_change: bool
192
+ @silent: bool
193
+ @delete_all_ignore_foreign_key: bool
194
+ @override_identifier: String?
195
+ @report_printer: Report::DefaultPrinter
196
+ @master_data_statuses: [MasterDataStatus]
197
+
198
+ def initialize: (dry_run: bool, verify: bool, only_import_tables: Array[String], except_import_tables: Array[String], only_verify_tables: Array[String], except_verify_tables: Array[String], skip_no_change: bool, silent: bool, delete_all_ignore_foreign_key: bool, override_identifier: String?, report_printer: Report::Printer) -> void
199
+ def execute: -> nil
200
+
201
+ private
202
+ def print_execute_options: -> nil
203
+ def build_master_data_collection: -> MasterDataCollection
204
+ def import_all!: (MasterDataCollection master_data_collection) -> (Array[MasterData] | Enumerator[MasterData, untyped] | Enumerator[untyped, untyped])
205
+ def verify_all!: (MasterDataCollection master_data_collection) -> (Array[MasterData] | Enumerator[MasterData, untyped] | Enumerator[untyped, untyped])
206
+ def save_master_data_statuses!: (MasterDataCollection master_data_collection) -> Array[MasterDataStatus]
207
+ def print_affected_tables: (MasterDataCollection master_data_collection) -> (Array[MasterData] | Enumerator[MasterData, untyped] | Enumerator[untyped, untyped])
208
+ def load_skip_table?: (untyped master_data_file) -> bool
209
+ def import_skip_table?: (untyped table_name) -> bool
210
+ def verify_skip_table?: (untyped table_name) -> bool
211
+ def need_skip_table?: (untyped table_name, Array[untyped] only, Array[untyped] except) -> bool
212
+ def extract_master_data_csv_paths: -> Array[Pathname]
213
+ def overridden_master_data_csv_paths: -> Array[Pathname]
214
+ def master_data_statuses: -> untyped
215
+ end
216
+ end
217
+
218
+ class Error < StandardError
219
+ end
220
+
221
+ class DryRunError < StandardError
222
+ end
223
+
224
+ class NotLoadedError < StandardError
225
+ end
226
+
227
+ class VerifyFailed < StandardError
228
+ attr_accessor errors: untyped
229
+ end
4
230
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: master_data_tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.19.1
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-06-11 00:00:00.000000000 Z
11
+ date: 2022-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -96,6 +96,20 @@ dependencies:
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: standalone_activerecord_boot_loader
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0.3'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -183,9 +197,10 @@ files:
183
197
  - docker-compose.yml
184
198
  - exe/master_data_tool
185
199
  - gemfiles/.bundle/config
186
- - gemfiles/activerecord52.gemfile
187
- - gemfiles/activerecord61.gemfile
188
- - gemfiles/activerecord70.gemfile
200
+ - gemfiles/activerecord5.2.gemfile
201
+ - gemfiles/activerecord6.0.gemfile
202
+ - gemfiles/activerecord6.1.gemfile
203
+ - gemfiles/activerecord7.0.gemfile
189
204
  - lib/generators/master_data_tool/install/install_generator.rb
190
205
  - lib/generators/master_data_tool/install/templates/create_master_data_statuses.rb.erb
191
206
  - lib/master_data_tool.rb
@@ -209,6 +224,7 @@ files:
209
224
  - lib/master_data_tool/version.rb
210
225
  - log/test.log
211
226
  - master_data_tool.gemspec
227
+ - scripts/drop_db.sh
212
228
  - scripts/setup.sh
213
229
  - sig/master_data_tool.rbs
214
230
  homepage: https://github.com/taka0125/master_data_tool
@@ -231,7 +247,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
247
  - !ruby/object:Gem::Version
232
248
  version: '0'
233
249
  requirements: []
234
- rubygems_version: 3.2.22
250
+ rubygems_version: 3.3.7
235
251
  signing_key:
236
252
  specification_version: 4
237
253
  summary: マスタデータの管理ツール