messagex 0.1.3 → 0.1.4
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/.gitignore +0 -0
- data/.rspec +0 -0
- data/.rubocop.yml +0 -0
- data/.rubocop_todo.yml +0 -0
- data/.travis.yml +0 -0
- data/Gemfile +0 -0
- data/Gemfile.lock +8 -8
- data/LICENSE.txt +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/lib/messagex/exc.rb +53 -0
- data/lib/messagex/loggerx.rb +73 -27
- data/lib/messagex/version.rb +2 -1
- data/lib/messagex.rb +100 -14
- data/messagex.gemspec +0 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a386955590d1742849e32e2de7d704fef132fe0c8c6c34be514affdb56423537
|
4
|
+
data.tar.gz: 76666c405b63c7e1996c91d638eb3dca914d82bbe3a0aee0b90fd5ff8760bf56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d44edde11c7dc2229f0a30569ca117a6fd06e79d18630f7ee65169b3d47a40cb74b5a9e78352d9c8567ea42674b1437c767259a796e759e2acd4cfe9e96e080
|
7
|
+
data.tar.gz: 7cf625ba7aaa239dfe4d425518c144d5733ad86a2fbc76e978064bb421d43fb38422fc2cfdd25f845bef35bb47d0bd6ae97f8737abaf876d3c97342e6a0d532c
|
data/.gitignore
CHANGED
File without changes
|
data/.rspec
CHANGED
File without changes
|
data/.rubocop.yml
CHANGED
File without changes
|
data/.rubocop_todo.yml
CHANGED
File without changes
|
data/.travis.yml
CHANGED
File without changes
|
data/Gemfile
CHANGED
File without changes
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
messagex (0.1.
|
4
|
+
messagex (0.1.4)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -20,24 +20,24 @@ GEM
|
|
20
20
|
rspec-mocks (~> 3.8.0)
|
21
21
|
rspec-core (3.8.0)
|
22
22
|
rspec-support (~> 3.8.0)
|
23
|
-
rspec-expectations (3.8.
|
23
|
+
rspec-expectations (3.8.3)
|
24
24
|
diff-lcs (>= 1.2.0, < 2.0)
|
25
25
|
rspec-support (~> 3.8.0)
|
26
26
|
rspec-mocks (3.8.0)
|
27
27
|
diff-lcs (>= 1.2.0, < 2.0)
|
28
28
|
rspec-support (~> 3.8.0)
|
29
29
|
rspec-support (3.8.0)
|
30
|
-
rubocop (0.
|
30
|
+
rubocop (0.71.0)
|
31
31
|
jaro_winkler (~> 1.5.1)
|
32
32
|
parallel (~> 1.10)
|
33
|
-
parser (>= 2.
|
33
|
+
parser (>= 2.6)
|
34
34
|
rainbow (>= 2.2.2, < 4.0)
|
35
35
|
ruby-progressbar (~> 1.7)
|
36
|
-
unicode-display_width (>= 1.4.0, < 1.
|
37
|
-
rubocop-performance (1.
|
36
|
+
unicode-display_width (>= 1.4.0, < 1.7)
|
37
|
+
rubocop-performance (1.3.0)
|
38
38
|
rubocop (>= 0.68.0)
|
39
|
-
ruby-progressbar (1.10.
|
40
|
-
unicode-display_width (1.
|
39
|
+
ruby-progressbar (1.10.1)
|
40
|
+
unicode-display_width (1.6.0)
|
41
41
|
|
42
42
|
PLATFORMS
|
43
43
|
ruby
|
data/LICENSE.txt
CHANGED
File without changes
|
data/README.md
CHANGED
File without changes
|
data/Rakefile
CHANGED
File without changes
|
data/lib/messagex/exc.rb
CHANGED
@@ -1,9 +1,21 @@
|
|
1
1
|
module Messagex
|
2
|
+
#
|
3
|
+
# I/O関連例外処理管理クラス
|
2
4
|
class Exc
|
5
|
+
#
|
6
|
+
# 初期化
|
7
|
+
#
|
8
|
+
# @param mes [Messagex] Messagexクラスのインスタンス
|
3
9
|
def initialize(mes)
|
4
10
|
@mes = mes
|
5
11
|
end
|
6
12
|
|
13
|
+
#
|
14
|
+
# I/O関連例外処理
|
15
|
+
#
|
16
|
+
# @param msg [String] エラーメッセージ
|
17
|
+
# @param exit_codestr [String] 終了ステータスの識別名
|
18
|
+
# @param block [Proc] Procのインスタンス
|
7
19
|
def exc(msg, exit_codestr, block)
|
8
20
|
begin
|
9
21
|
block.call
|
@@ -18,48 +30,89 @@ module Messagex
|
|
18
30
|
end
|
19
31
|
end
|
20
32
|
|
33
|
+
#
|
34
|
+
# ディレクトリ移動失敗例外処理
|
35
|
+
#
|
36
|
+
# @param arg1 [String] 移動しようとしたディレクトリ名
|
37
|
+
# @param block [Proc] ブロック引数
|
21
38
|
def exc_change_directory(arg1, &block)
|
22
39
|
msg = "Can't change directory to |#{arg1}|"
|
23
40
|
exit_codestr = "EXIT_CODE_CANNOT_CHANGE_DIRECTORY"
|
24
41
|
exc(msg, exit_codestr, block)
|
25
42
|
end
|
26
43
|
|
44
|
+
#
|
45
|
+
# ファイルオープン失敗例外処理
|
46
|
+
#
|
47
|
+
# @param arg1 [String] エラーメッセージに組みこむ値
|
48
|
+
# @param block [Proc] ブロック引数
|
27
49
|
def exc_file_open(arg1, &block)
|
28
50
|
msg = "Cannot open file #{arg1}"
|
29
51
|
exit_codestr = "EXIT_CODE_CANNOT_OPEN_FILE"
|
30
52
|
exc(msg, exit_codestr, block)
|
31
53
|
end
|
32
54
|
|
55
|
+
#
|
56
|
+
# ファイル読込失敗例外処理
|
57
|
+
#
|
58
|
+
# @param arg1 [String] 読み込もうとしたファイル名
|
59
|
+
# @param block [Proc] ブロック引数
|
33
60
|
def exc_file_read(arg1, &block)
|
34
61
|
msg = "Cannot read file #{arg1}"
|
35
62
|
exit_codestr = "EXIT_CODE_CANNOT_READ_FILE"
|
36
63
|
exc(msg, exit_codestr, block)
|
37
64
|
end
|
38
65
|
|
66
|
+
#
|
67
|
+
# ファイル1行読込失敗例外処理
|
68
|
+
#
|
69
|
+
# @param arg1 [String] 読み込もうとしたファイル名
|
70
|
+
# @param block [Proc] ブロック引数
|
39
71
|
def exc_file_gets(arg1, &block)
|
40
72
|
msg = "Cannot read file #{arg1}"
|
41
73
|
exit_codestr = "EXIT_CODE_CANNOT_READ_FILE"
|
42
74
|
exc(msg, exit_codestr, block)
|
43
75
|
end
|
44
76
|
|
77
|
+
#
|
78
|
+
# ファイルクローズ失敗例外処理
|
79
|
+
#
|
80
|
+
# @param arg1 [String] クローズしようとしたファイル名
|
81
|
+
# @param block [Proc] ブロック引数
|
45
82
|
def exc_file_close(arg1, &block)
|
46
83
|
msg = "Cannot close file #{arg1}"
|
47
84
|
exit_codestr = "EXIT_CODE_CANNOT_OPEN_FILE"
|
48
85
|
exc(msg, exit_codestr, block)
|
49
86
|
end
|
50
87
|
|
88
|
+
#
|
89
|
+
# ファイル書込失敗例外処理
|
90
|
+
#
|
91
|
+
# @param arg1 [String] 書き込もうとしたファイル名
|
92
|
+
# @param block [Proc] ブロック引数
|
51
93
|
def exc_file_write(arg1, &block)
|
52
94
|
msg = "Cannot write file #{arg1}"
|
53
95
|
exit_codestr = "EXIT_CODE_CANNOT_WRITE_FILE"
|
54
96
|
exc(msg, exit_codestr, block)
|
55
97
|
end
|
56
98
|
|
99
|
+
#
|
100
|
+
# ファイルコピー失敗例外処理
|
101
|
+
#
|
102
|
+
# @param arg1 [String] コピー元ファイル名
|
103
|
+
# @param arg2 [String] コピー先ファイル名
|
104
|
+
# @param block [Proc] ブロック引数
|
57
105
|
def exc_file_copy(arg1, arg2, &block)
|
58
106
|
msg = "Can't copy file from #{arg1} to #{arg2}"
|
59
107
|
exit_codestr = "EXIT_CODE_CANNOT_COPY_FILE"
|
60
108
|
exc(msg, exit_codestr, block)
|
61
109
|
end
|
62
110
|
|
111
|
+
#
|
112
|
+
# ディレクトリ作成失敗例外処理
|
113
|
+
#
|
114
|
+
# @param arg1 [String] 作成しようとしたディレクトリ名
|
115
|
+
# @param block [Proc] ブロック引数
|
63
116
|
def exc_make_directory(arg1, &block)
|
64
117
|
msg = "Can't make directory to #{arg1}"
|
65
118
|
exit_codestr = "EXIT_CODE_CANNOT_MAKE_DIRECTORY"
|
data/lib/messagex/loggerx.rb
CHANGED
@@ -1,59 +1,105 @@
|
|
1
1
|
require "logger"
|
2
2
|
|
3
3
|
module Messagex
|
4
|
+
#
|
5
|
+
# 出力先が標準出力とファイルの2種類をもつログ機能管理クラス
|
4
6
|
class Loggerx
|
7
|
+
#
|
8
|
+
# 初期化
|
9
|
+
#
|
10
|
+
# @param fname [String] ログの出力先ファイル名
|
5
11
|
def initialize(fname)
|
6
|
-
@
|
7
|
-
@
|
8
|
-
@
|
12
|
+
@logger_stdout = Logger.new(STDOUT)
|
13
|
+
@logger_stdout.level = Logger::UNKNOWN
|
14
|
+
@logger_stdout.formatter = proc do |severity, _datetime, _progname, msg|
|
9
15
|
"#{severity[0]}: #{msg}\n"
|
10
16
|
end
|
11
17
|
file = File.open(fname, "w")
|
12
|
-
@
|
13
|
-
@
|
14
|
-
@
|
18
|
+
@logger_file = Logger.new(file)
|
19
|
+
@logger_file.level = Logger::INFO
|
20
|
+
@logger_file.formatter = proc do |severity, _datetime, _progname, msg|
|
15
21
|
"#{severity}: #{msg}\n"
|
16
22
|
end
|
17
23
|
end
|
18
24
|
|
25
|
+
#
|
26
|
+
# ログ記録の日時フォーマットの設定
|
27
|
+
#
|
28
|
+
# @param format [String] ログ記録の日時フォーマット
|
29
|
+
# @return [void]
|
19
30
|
def datetime_format=(format)
|
20
|
-
@
|
21
|
-
@
|
31
|
+
@logger_stdout.datetime_format = format
|
32
|
+
@logger_file.datetime_format = format
|
22
33
|
end
|
23
34
|
|
35
|
+
#
|
36
|
+
# ログ記録のフォーマットの設定
|
37
|
+
#
|
38
|
+
# @param format [String] ログ記録のフォーマット
|
39
|
+
# @return [void]
|
24
40
|
def formatter=(format)
|
25
|
-
@
|
26
|
-
@
|
41
|
+
@logger_stdout.formatter = format
|
42
|
+
@logger_file.formatter = format
|
27
43
|
end
|
28
44
|
|
45
|
+
#
|
46
|
+
# ログレベルの設定
|
47
|
+
#
|
48
|
+
# @param value [String,Symbol] ログレベル
|
49
|
+
# @return [void]
|
29
50
|
def level=(value)
|
30
|
-
@
|
31
|
-
@
|
51
|
+
@logger_stdout.level = value
|
52
|
+
@logger_file.level = value
|
32
53
|
end
|
33
54
|
|
34
|
-
|
35
|
-
|
36
|
-
|
55
|
+
#
|
56
|
+
# ログレベルが DEBUG のメッセージを出力
|
57
|
+
#
|
58
|
+
# @param msg [String] メッセージ
|
59
|
+
# @return [void]
|
60
|
+
def debug(msg)
|
61
|
+
@logger_stdout.debug(msg)
|
62
|
+
@logger_file.debug(msg)
|
37
63
|
end
|
38
64
|
|
39
|
-
|
40
|
-
|
41
|
-
|
65
|
+
#
|
66
|
+
# ログレベルが ERROR のメッセージを出力
|
67
|
+
#
|
68
|
+
# @param msg [String] メッセージ
|
69
|
+
# @return [void]
|
70
|
+
def error(msg)
|
71
|
+
@logger_stdout.error(msg)
|
72
|
+
@logger_file.error(msg)
|
42
73
|
end
|
43
74
|
|
44
|
-
|
45
|
-
|
46
|
-
|
75
|
+
#
|
76
|
+
# ログレベルが FATAL のメッセージを出力
|
77
|
+
#
|
78
|
+
# @param msg [String] メッセージ
|
79
|
+
# @return [void]
|
80
|
+
def fatal(msg)
|
81
|
+
@logger_stdout.fatal(msg)
|
82
|
+
@logger_file.fatal(msg)
|
47
83
|
end
|
48
84
|
|
49
|
-
|
50
|
-
|
51
|
-
|
85
|
+
#
|
86
|
+
# ログレベルが WARN のメッセージを出力
|
87
|
+
#
|
88
|
+
# @param msg [String] メッセージ
|
89
|
+
# @return [void]
|
90
|
+
def warn(msg)
|
91
|
+
@logger_stdout.warn(msg)
|
92
|
+
@logger_file.warn(msg)
|
52
93
|
end
|
53
94
|
|
54
|
-
|
55
|
-
|
56
|
-
|
95
|
+
#
|
96
|
+
# ログレベルが INFO のメッセージを出力
|
97
|
+
#
|
98
|
+
# @param msg [String] メッセージ
|
99
|
+
# @return [void]
|
100
|
+
def info(msg)
|
101
|
+
@logger_stdout.info(msg)
|
102
|
+
@logger_file.info(msg)
|
57
103
|
end
|
58
104
|
end
|
59
105
|
end
|
data/lib/messagex/version.rb
CHANGED
data/lib/messagex.rb
CHANGED
@@ -1,24 +1,56 @@
|
|
1
|
+
#
|
2
|
+
# 終了ステータス管理、ログ機能管理のモジュール
|
1
3
|
module Messagex
|
4
|
+
#
|
5
|
+
# 終了ステータス管理、ログ機能管理のクラス
|
2
6
|
class Messagex
|
3
7
|
extend Forwardable
|
4
8
|
|
9
|
+
# @!method exc
|
10
|
+
# @see Exc#exc
|
11
|
+
# @!method exc_change_directory
|
12
|
+
# @see Exc#exc_change_directory]
|
13
|
+
# @!method exc_file_open
|
14
|
+
# @see Exc#exc_file_open
|
15
|
+
# @!method exc_file_read
|
16
|
+
# @see Exc#exc_file_read
|
17
|
+
# @!method exc_file_gets
|
18
|
+
# @see Exc#exc_file_gets
|
19
|
+
# @!method exc_file_close
|
20
|
+
# @see Exc#exc_file_close
|
21
|
+
# @!method exc_file_write
|
22
|
+
# @see Exc#exc_file_write
|
23
|
+
# @!method exc_file_copy
|
24
|
+
# @see Exc#exc_file_copy
|
25
|
+
# @!method exc_make_directory
|
26
|
+
# @see Exc#exc_make_directory
|
5
27
|
def_delegators :@exc_inst, :exc, :exc_change_directory, :exc_file_open, :exc_file_read, :exc_file_gets, :exc_file_close, :exc_file_write, :exc_file_copy, :exc_make_directory
|
6
28
|
|
29
|
+
# @return [Loggerx] Loggerxクラスのインスタンス
|
7
30
|
attr_reader :logger
|
8
31
|
|
9
32
|
require "messagex/version"
|
10
33
|
require "messagex/loggerx"
|
11
34
|
require "messagex/exc"
|
12
35
|
|
13
|
-
|
36
|
+
#
|
37
|
+
# 初期化
|
38
|
+
#
|
39
|
+
# @param initial_exitcode [String] 最初に登録する終了ステータスの識別名
|
40
|
+
# @param initial_num [Integer] 登録する終了ステータスの初期値
|
41
|
+
# @param debug [Symbol] ログ機能のログレベル指定 `:debug`、`:verbose`、その他
|
42
|
+
# @param logger [Loggerx] 複数のLoggerクラスのインスタンスを持つことが出来るLoggerxクラスのインスタンス
|
43
|
+
# @param logfname [String] ログの出力先ファイル名
|
44
|
+
# @note 引数debugの値はLoggerクラスのログレベル設定とは指定方法が異なる
|
45
|
+
def initialize(initial_exitcode, initial_num, debug=:warn, logger=nil, logfname=nil)
|
14
46
|
@exit_code = {}
|
15
|
-
set_initial_exitcode(
|
47
|
+
set_initial_exitcode(initial_exitcode, initial_num)
|
16
48
|
|
17
49
|
if logger
|
18
50
|
@logger = logger
|
19
51
|
else
|
20
|
-
|
21
|
-
@logger = Loggerx.new(
|
52
|
+
log_fname = (!logfname.nil? && !logfname.empty?) ? logfname : "log.txt"
|
53
|
+
@logger = Loggerx.new(log_fname)
|
22
54
|
# Logger::WARN , Logger::INFO
|
23
55
|
|
24
56
|
case debug
|
@@ -41,10 +73,14 @@ module Messagex
|
|
41
73
|
end
|
42
74
|
end
|
43
75
|
|
44
|
-
|
76
|
+
register_exitcodes
|
45
77
|
end
|
46
78
|
|
47
|
-
|
79
|
+
#
|
80
|
+
# Messagexクラスで利用する終了ステータスの登録
|
81
|
+
#
|
82
|
+
# @return [void]
|
83
|
+
def register_exitcodes
|
48
84
|
add_exitcode("EXIT_CODE_CANNOT_READ_FILE")
|
49
85
|
add_exitcode("EXIT_CODE_CANNOT_WRITE_FILE")
|
50
86
|
add_exitcode("EXIT_CODE_CANNOT_FIND_DIRECTORY")
|
@@ -54,28 +90,53 @@ module Messagex
|
|
54
90
|
add_exitcode("EXIT_CODE_CANNOT_COPY_FILE")
|
55
91
|
end
|
56
92
|
|
93
|
+
#
|
94
|
+
# I/O関連例外処理管理クラスのインスタンスの登録
|
95
|
+
#
|
96
|
+
# @return [void]
|
57
97
|
def register_exc
|
58
98
|
@exc_inst = Exc.new(self)
|
59
99
|
end
|
60
100
|
|
101
|
+
#
|
102
|
+
# 識別名で指定された終了ステータスを得る
|
103
|
+
#
|
104
|
+
# @param name [String] 登録された終了ステータスの識別名
|
105
|
+
# @return [Integer] 終了ステータス
|
61
106
|
def ec(name)
|
62
107
|
@exit_code[name]
|
63
108
|
end
|
64
109
|
|
110
|
+
#
|
111
|
+
# 終了ステータスの最初の登録
|
112
|
+
#
|
113
|
+
# @param name [String] 登録する終了ステータスの識別名
|
114
|
+
# @param num [Integer] 登録する終了ステータスの値
|
115
|
+
# @return [void]
|
65
116
|
def set_initial_exitcode(name, num)
|
66
|
-
@exit_code
|
117
|
+
@exit_code ||= {}
|
67
118
|
@exit_code[name] = num
|
68
|
-
@
|
119
|
+
@cur_exit_code = num
|
69
120
|
end
|
70
121
|
|
122
|
+
#
|
123
|
+
# 終了ステータスの値の自動割り当て
|
124
|
+
#
|
125
|
+
# @param name [String] 値の自動割り当て対象の終了ステータスの識別名
|
126
|
+
# @return [Integer] 自動割り当てされた終了ステータスの値
|
71
127
|
def add_exitcode(str)
|
72
128
|
return if @exit_code[str]
|
73
129
|
|
74
|
-
num = (@
|
130
|
+
num = (@cur_exit_code + 1)
|
75
131
|
@exit_code[str] = num
|
76
|
-
@
|
132
|
+
@cur_exit_code = num
|
77
133
|
end
|
78
134
|
|
135
|
+
#
|
136
|
+
# ログレベルが ERROR のメッセージを出力
|
137
|
+
#
|
138
|
+
# @param msg [String]
|
139
|
+
# @return [void]
|
79
140
|
def output_error(msg)
|
80
141
|
if @logger
|
81
142
|
@logger.error(msg)
|
@@ -84,6 +145,11 @@ module Messagex
|
|
84
145
|
end
|
85
146
|
end
|
86
147
|
|
148
|
+
#
|
149
|
+
# ログレベルが FATAL のメッセージを出力
|
150
|
+
#
|
151
|
+
# @param msg [String]
|
152
|
+
# @return [void]
|
87
153
|
def output_fatal(msg)
|
88
154
|
if @logger
|
89
155
|
@logger.fatal(msg)
|
@@ -92,6 +158,11 @@ module Messagex
|
|
92
158
|
end
|
93
159
|
end
|
94
160
|
|
161
|
+
#
|
162
|
+
# ログレベルが DEBUG のメッセージを出力
|
163
|
+
#
|
164
|
+
# @param msg [String]
|
165
|
+
# @return [void]
|
95
166
|
def output_debug(msg)
|
96
167
|
if @logger
|
97
168
|
@logger.debug(msg)
|
@@ -100,6 +171,11 @@ module Messagex
|
|
100
171
|
end
|
101
172
|
end
|
102
173
|
|
174
|
+
#
|
175
|
+
# ログレベルが INFO のメッセージを出力
|
176
|
+
#
|
177
|
+
# @param msg [String]
|
178
|
+
# @return [void]
|
103
179
|
def output_info(msg)
|
104
180
|
if @logger
|
105
181
|
@logger.info(msg)
|
@@ -108,6 +184,11 @@ module Messagex
|
|
108
184
|
end
|
109
185
|
end
|
110
186
|
|
187
|
+
#
|
188
|
+
# ログレベルが WARN のメッセージを出力
|
189
|
+
#
|
190
|
+
# @param msg [String]
|
191
|
+
# @return [void]
|
111
192
|
def output_warn(msg)
|
112
193
|
if @logger
|
113
194
|
@logger.warn(msg)
|
@@ -116,10 +197,15 @@ module Messagex
|
|
116
197
|
end
|
117
198
|
end
|
118
199
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
200
|
+
#
|
201
|
+
# ログレベルが ERROR のメッセージを出力
|
202
|
+
#
|
203
|
+
# @param msg [String]
|
204
|
+
# @return [void]
|
205
|
+
def output_exception(exception)
|
206
|
+
output_fatal(exception.class)
|
207
|
+
output_fatal(exception.message)
|
208
|
+
output_fatal(exception.backtrace.join("\n"))
|
123
209
|
end
|
124
210
|
end
|
125
211
|
end
|
data/messagex.gemspec
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: messagex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yasuo kominami
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|