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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6019d75b3db08ca0edaf67f62f7bea9cab8fc6ca8252f5474bf1db8685ec8255
4
- data.tar.gz: b5a1ea9385cf5f288361857523da6ef0064bab68597ea505cbdc1936c1d309f5
3
+ metadata.gz: 64c169242f5fd0a16a4b5153dc597473146c057ddb72b8a1f8451cd9ec82032f
4
+ data.tar.gz: 65bd3c7a4bb1537a2853796d1947df6ab0665e9ddb737db6a913b6d21c1626a5
5
5
  SHA512:
6
- metadata.gz: 57d07dc1caf3c18c5cf48e0056ed5db8fbc22b77169255d83d0babca627ac9895bab8020abb768923762bc7c05d3a37d26aa21cb00f9e5086c31ab95cf85a493
7
- data.tar.gz: 89a2203dce4e85466f1db3d84c29824057b4e46008e9607204e56c3307cf7ddf91e371f747ef59e9df6266f89f36805229043e81526e3edf2a734ec419d340fd
6
+ metadata.gz: fe25e52351bd9d13f5fcd718bf21e49f297e82b99462b3666172e514beff19108dd8d49c17c9e91f5e5c6bd77f12b08575086b63f7ac46cf6e1601dafe086484
7
+ data.tar.gz: e072e9911a9449691480b85ba03dfbfb971cdaa9bc58c8dce5fb4dd60fce86ce2305fc5bcea1e39ef8efd3b4b6a4e6dfcd9a2547f064bcddcc9cf37c00883565
data/Appraisals CHANGED
@@ -1,13 +1,13 @@
1
- appraise 'rails52' do
2
- gem 'rails', '~> 5.2'
1
+ appraise 'activerecord52' do
2
+ gem 'activerecord', '~> 5.2'
3
3
  end
4
4
 
5
- appraise 'rails61' do
6
- gem 'rails', '~> 6.1'
5
+ appraise 'activerecord61' do
6
+ gem 'activerecord', '~> 6.1'
7
7
  end
8
8
 
9
9
  if RUBY_VERSION >= '2.7.0'
10
- appraise 'rails70' do
11
- gem 'rails', '~> 7.0'
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
- cd spec/dummy-rails52/
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 rails52 rspec
174
- bundle exec appraisal rails61 rspec
175
- bundle exec appraisal rails70 rspec
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
@@ -4,7 +4,7 @@ x-mysql: &mysql
4
4
  image: mysql:5.7
5
5
  container_name: master_data_tool_mysql57
6
6
  environment:
7
- MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
7
+ MYSQL_ROOT_PASSWORD: 'f3WpxNreVT2NgQry'
8
8
  platform: linux/x86_64
9
9
  ports:
10
10
  - 127.0.0.1::3306
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
@@ -4,6 +4,6 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rake", "~> 13.0"
6
6
  gem "rspec", "~> 3.0"
7
- gem "rails", "~> 5.2"
7
+ gem "activerecord", "~> 5.2"
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 "rails", "~> 6.1"
7
+ gem "activerecord", "~> 6.1"
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 "rails", "~> 7.0"
7
+ gem "activerecord", "~> 7.0"
8
8
 
9
9
  gemspec path: "../"
@@ -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 = Rails.logger
17
+ config.logger = Logger.new(nil)
18
18
  end
19
19
  end
20
20
  end
@@ -39,7 +39,7 @@ module MasterDataTool
39
39
  end
40
40
 
41
41
  def dump_to_csv(table)
42
- model_klass = Rails.const_get(table.classify)
42
+ model_klass = Object.const_get(table.classify)
43
43
  if ignore?(model_klass)
44
44
  print_message "[ignore] #{table}"
45
45
 
@@ -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 = Rails.const_get(table_name.classify)
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
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'active_record'
4
4
  require 'activerecord-import'
5
+ require 'openssl'
5
6
 
6
7
  module MasterDataTool
7
8
  class MasterDataStatus < ::ActiveRecord::Base
@@ -3,7 +3,15 @@
3
3
  module MasterDataTool
4
4
  module Report
5
5
  module Printer
6
+ attr_accessor :silent
7
+
8
+ def initialize(silent: false)
9
+ @silent = silent
10
+ end
11
+
6
12
  def print(message)
13
+ return if @silent
14
+
7
15
  raise NotImplementedError
8
16
  end
9
17
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MasterDataTool
4
- VERSION = "0.4.0"
4
+ VERSION = "0.8.0"
5
5
  end
@@ -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.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-17 00:00:00.000000000 Z
11
+ date: 2022-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec-rails
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: rails
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/rails52.gemfile
130
- - gemfiles/rails61.gemfile
131
- - gemfiles/rails70.gemfile
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.0.3
231
+ rubygems_version: 3.2.22
173
232
  signing_key:
174
233
  specification_version: 4
175
234
  summary: マスタデータの管理ツール