rbatch 2.1.6 → 2.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/.gitignore +1 -0
  2. data/README.ja.md +5 -2
  3. data/README.md +12 -8
  4. data/lib/rbatch/cmd.rb +51 -10
  5. data/lib/rbatch/config.rb +47 -10
  6. data/lib/rbatch/controller.rb +1 -0
  7. data/lib/rbatch/double_run_checker.rb +2 -0
  8. data/lib/rbatch/journal.rb +1 -0
  9. data/lib/rbatch/log.rb +111 -41
  10. data/lib/rbatch/run_conf.rb +1 -0
  11. data/lib/rbatch/variables.rb +2 -0
  12. data/lib/rbatch/version.rb +1 -1
  13. data/lib/rbatch.rb +46 -0
  14. data/spec/rbatch/config_spec.rb +26 -0
  15. metadata +3 -61
  16. data/doc/RBatch/Cmd.html +0 -321
  17. data/doc/RBatch/CmdException.html +0 -164
  18. data/doc/RBatch/CmdResult.html +0 -494
  19. data/doc/RBatch/CommonConfig/Exception.html +0 -159
  20. data/doc/RBatch/CommonConfig.html +0 -456
  21. data/doc/RBatch/Config/Exception.html +0 -159
  22. data/doc/RBatch/Config.html +0 -416
  23. data/doc/RBatch/Controller.html +0 -374
  24. data/doc/RBatch/DoubleRunCheckException.html +0 -164
  25. data/doc/RBatch/DoubleRunChecker.html +0 -279
  26. data/doc/RBatch/Journal.html +0 -332
  27. data/doc/RBatch/Log.html +0 -667
  28. data/doc/RBatch/LogException.html +0 -164
  29. data/doc/RBatch/RBatch/RBatch/ConfigException.html +0 -164
  30. data/doc/RBatch/RBatch/RBatch.html +0 -163
  31. data/doc/RBatch/RBatch/VariablesException.html +0 -164
  32. data/doc/RBatch/RBatch.html +0 -165
  33. data/doc/RBatch/RunConf/Exception.html +0 -164
  34. data/doc/RBatch/RunConf.html +0 -503
  35. data/doc/RBatch/Variables.html +0 -437
  36. data/doc/RBatch.html +0 -411
  37. data/doc/created.rid +0 -11
  38. data/doc/images/brick.png +0 -0
  39. data/doc/images/brick_link.png +0 -0
  40. data/doc/images/bug.png +0 -0
  41. data/doc/images/bullet_black.png +0 -0
  42. data/doc/images/bullet_toggle_minus.png +0 -0
  43. data/doc/images/bullet_toggle_plus.png +0 -0
  44. data/doc/images/date.png +0 -0
  45. data/doc/images/find.png +0 -0
  46. data/doc/images/loadingAnimation.gif +0 -0
  47. data/doc/images/macFFBgHack.png +0 -0
  48. data/doc/images/package.png +0 -0
  49. data/doc/images/page_green.png +0 -0
  50. data/doc/images/page_white_text.png +0 -0
  51. data/doc/images/page_white_width.png +0 -0
  52. data/doc/images/plugin.png +0 -0
  53. data/doc/images/ruby.png +0 -0
  54. data/doc/images/tag_green.png +0 -0
  55. data/doc/images/wrench.png +0 -0
  56. data/doc/images/wrench_orange.png +0 -0
  57. data/doc/images/zoom.png +0 -0
  58. data/doc/index.html +0 -197
  59. data/doc/js/darkfish.js +0 -118
  60. data/doc/js/jquery.js +0 -32
  61. data/doc/js/quicksearch.js +0 -114
  62. data/doc/js/thickbox-compressed.js +0 -10
  63. data/doc/lib/rbatch/cmd_rb.html +0 -60
  64. data/doc/lib/rbatch/common_config_rb.html +0 -56
  65. data/doc/lib/rbatch/config_rb.html +0 -56
  66. data/doc/lib/rbatch/controller_rb.html +0 -66
  67. data/doc/lib/rbatch/double_run_checker_rb.html +0 -56
  68. data/doc/lib/rbatch/journal_rb.html +0 -52
  69. data/doc/lib/rbatch/log_rb.html +0 -60
  70. data/doc/lib/rbatch/run_conf_rb.html +0 -56
  71. data/doc/lib/rbatch/variables_rb.html +0 -54
  72. data/doc/lib/rbatch/version_rb.html +0 -52
  73. data/doc/lib/rbatch_rb.html +0 -54
  74. data/doc/rdoc.css +0 -763
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  pkg/
2
2
  sample/log/*.log
3
3
  coverage/
4
+ .yardoc/
data/README.ja.md CHANGED
@@ -1,4 +1,4 @@
1
- [[English]](https://github.com/fetaro/rbatch/blob/master/README.md "english") [[Japanese]](https://github.com/fetaro/rbatch/blob/master/README.ja.md "japanese")
1
+ [English](https://github.com/fetaro/rbatch/blob/master/README.md "english") | [Japanese ](https://github.com/fetaro/rbatch/blob/master/README.ja.md "japanese") | [Document (YardDoc)](http://fetaro.github.io/rbatch/index.html)
2
2
 
3
3
  RBatch:Ruby-base バッチ スクリプト フレームワーク
4
4
  =============
@@ -30,7 +30,7 @@ RBatchはRubyで書かれたシンプルなバッチスクリプトのフレー
30
30
  $ ruby bin/hello_world.rb
31
31
  $ cat log/YYYYMMDD_HHMMSS_hello_world.log
32
32
 
33
- マニュアル
33
+ 機能概要
34
34
  --------------
35
35
 
36
36
  ### RBatchホームディレクトリ
@@ -166,6 +166,9 @@ p r.status # => 0
166
166
 
167
167
  `forbid_double_run`のオプションを利用すれば、RBatchを利用したプログラムの二重起動チェックができます。
168
168
 
169
+ ドキュメント
170
+ --------------
171
+ こちらにあります→ [Document (YardDoc)](http://fetaro.github.io/rbatch/index.html)
169
172
 
170
173
  サンプル
171
174
  --------------
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [[English]](https://github.com/fetaro/rbatch/blob/master/README.md "english") [[Japanese]](https://github.com/fetaro/rbatch/blob/master/README.ja.md "japanese")
1
+ [English](https://github.com/fetaro/rbatch/blob/master/README.md "english") | [Japanese ](https://github.com/fetaro/rbatch/blob/master/README.ja.md "japanese") | [Document (YardDoc)](http://fetaro.github.io/rbatch/index.html)
2
2
 
3
3
  RBatch: Framework for Ruby-based Batch Script
4
4
  =============
@@ -31,7 +31,7 @@ Quick Start
31
31
  $ ruby bin/hello_world.rb
32
32
  $ cat log/YYYYMMDD_HHMMSS_hello_world.log
33
33
 
34
- Manual
34
+ Overview
35
35
  --------------
36
36
 
37
37
  ### RBatch home directory
@@ -166,6 +166,11 @@ You have no use for an error handring.
166
166
 
167
167
  Using `forbid_double_run` option, two same name scripts cannot run at the same time.
168
168
 
169
+ Manual
170
+ --------------
171
+
172
+ Manual -> [Document (YardDoc)](http://fetaro.github.io/rbatch/index.html)
173
+
169
174
  Sample
170
175
  --------------
171
176
 
@@ -366,14 +371,13 @@ Sample of RBatch Run-Conf `${RB_HOME}/.rbatchrc`.
366
371
  # Delete old log files
367
372
  #
368
373
  # Default is false.
369
- # If this is true, delete old log file when RBatch::Log.new is called.
370
- # A log file to delete is a log file which was made by the
371
- # RBatch::Log instance, and log filename format include "<date>".
374
+ # If this is true, delete old log files when RBatch::Log.new is called.
375
+ # If log filename format does not include "<date>", do nothing.
372
376
  #
373
377
  #log_delete_old_log : true
374
378
  #log_delete_old_log : false
375
379
 
376
- # Expire Date of Log Files
380
+ # Expire Days of Log Files
377
381
  #
378
382
  # Default is 7.
379
383
  #
@@ -382,8 +386,8 @@ Sample of RBatch Run-Conf `${RB_HOME}/.rbatchrc`.
382
386
  # Send Mail
383
387
  #
384
388
  # Default is false.
385
- # When log.error(msg) or log.fatal(msg) called , send e-mail
386
- # including "msg".
389
+ # When log.error is called, log.fatal is called,
390
+ # or rescue an Exception, send e-mail.
387
391
  #
388
392
  #log_send_mail : true
389
393
 
data/lib/rbatch/cmd.rb CHANGED
@@ -4,12 +4,27 @@ require 'tmpdir'
4
4
  require 'timeout'
5
5
  module RBatch
6
6
 
7
+ # External command wrapper
7
8
  class Cmd
9
+ # @private
8
10
  @@def_vars
9
- def Cmd.def_vars=(a) ; @@def_vars=a ; end
11
+
12
+ # @private
13
+ # @param [RBatch::Variables] vars
14
+ def Cmd.def_vars=(vars) ; @@def_vars=vars ; end
15
+
16
+ # command string
10
17
  @cmd_str
18
+
19
+ # option
11
20
  @opt
21
+
22
+ # @private
12
23
  @vars
24
+
25
+ # @param [String] cmd_str command string such as "ls -l"
26
+ # @option opt [Boolean] :raise
27
+ # @option opt [Integer] :timeout
13
28
  def initialize(cmd_str,opt = nil)
14
29
  raise(CmdException,"Command string is nil") if cmd_str.nil?
15
30
  @cmd_str = cmd_str
@@ -24,6 +39,9 @@ module RBatch
24
39
  end
25
40
  end
26
41
 
42
+ # Run command
43
+ # @raise [RBatch::CmdException]
44
+ # @return [RBatch::CmdResult]
27
45
  def run()
28
46
  stdout_file = Tempfile::new("rbatch_tmpout",Dir.tmpdir)
29
47
  stderr_file = Tempfile::new("rbatch_tmperr",Dir.tmpdir)
@@ -39,7 +57,7 @@ module RBatch
39
57
  Process.kill('SIGINT', pid)
40
58
  raise(CmdException,"Run time of command \"#{@cmd_str}\" is over #{@vars[:cmd_timeout].to_s} sec. Success to kill process : PID=#{pid}" )
41
59
  rescue
42
- raise(CmdException,"Run time of command \"#{@cmd_str}\" is over #{@vars[:cmd_timeout].to_s} sec. Fail to kill process : PID=#{pid}" )
60
+ raise(CmdException,"Run time of command \"#{@cmd_str}\" is over #{@vars[:cmd_timeout].to_s} sec. But Fail to kill process : PID=#{pid}" )
43
61
  end
44
62
  end
45
63
  else
@@ -53,30 +71,53 @@ module RBatch
53
71
  end
54
72
  end
55
73
 
74
+ # Result of external command wrapper
56
75
  class CmdResult
57
- @stdout_file
58
- @stderr_file
59
- @status
60
- @cmd_str
76
+
77
+ # Tmp file including STDOUT String
78
+ # @return [File]
79
+ attr_reader :stdout_file
80
+
81
+ # Tmp file including STDERROR String
82
+ # @return [File]
83
+ attr_reader :stderr_file
84
+
85
+ # Exit status
86
+ # @return [Integer]
87
+ attr_reader :status
88
+
89
+ # Command string
90
+ # @return [String]
91
+ attr_reader :cmd_str
92
+
93
+ # @private
61
94
  def initialize(stdout_file, stderr_file, status, cmd_str)
62
95
  @stdout_file = stdout_file
63
96
  @stderr_file = stderr_file
64
97
  @status = status
65
98
  @cmd_str = cmd_str
66
99
  end
67
- def stdout_file ; @stdout_file ; end
68
- def stderr_file ; @stderr_file ; end
69
- def status ; @status ; end
70
- def cmd_str ; @cmd_str ; end
100
+
101
+ # STDOUT String
102
+ # @return [String]
71
103
  def stdout
72
104
  File.read(@stdout_file)
73
105
  end
106
+
107
+ # STDERR String
108
+ # @return [String]
74
109
  def stderr
75
110
  File.read(@stderr_file)
76
111
  end
112
+
113
+ # Return hash including cmd_str, std_out, std_err, and status
114
+ # @return [Hash]
77
115
  def to_h
78
116
  {:cmd_str => @cmd_str,:stdout => stdout, :stderr => stderr, :status => status}
79
117
  end
118
+
119
+ # Return string including cmd_str, std_out, std_err, and status
120
+ # @return [String]
80
121
  def to_s
81
122
  to_h.to_s
82
123
  end
data/lib/rbatch/config.rb CHANGED
@@ -4,34 +4,42 @@ require 'pathname'
4
4
  module RBatch
5
5
 
6
6
  class Config
7
+ # Config file path
7
8
  @path
9
+
10
+ # Actual data
8
11
  @hash
12
+
13
+ # @param [String] path Config file path
9
14
  def initialize(path)
10
15
  @path = path
11
16
  begin
12
- @hash = YAML::load_file(@path)
17
+ @hash = ConfigElement.new(YAML::load_file(@path))
13
18
  rescue Errno::ENOENT => e
14
19
  @hash = nil
15
20
  end
16
21
  end
22
+
23
+ # Config value
24
+ # @param [Object] key Config key.
25
+ # @raise [RBatch::ConfigException]
17
26
  def[](key)
18
27
  if @hash.nil?
19
28
  raise RBatch::ConfigException, "Config file \"#{@path}\" does not exist"
20
- end
21
- if @hash[key].nil?
22
- if key.class == Symbol
23
- raise RBatch::ConfigException, "Value of key(:#{key} (Symbol)) is nil. By any chance, dou you mistake key class Symbol for String?"
24
- elsif key.class == String
25
- raise RBatch::ConfigException, "Value of key(\"#{key}\" (String)) is nil"
26
- else
27
- raise RBatch::ConfigException, "Value of key(#{key}) is nil."
28
- end
29
29
  else
30
30
  @hash[key]
31
31
  end
32
32
  end
33
+
34
+ # Config file path
35
+ # @return [String]
33
36
  def path ; @path ; end
37
+
38
+ # Config file exists or not
39
+ # @return [Boolean]
34
40
  def exist? ; ! @hash.nil? ; end
41
+
42
+ # @return [Hash]
35
43
  def to_h
36
44
  if @hash.nil?
37
45
  raise RBatch::ConfigException, "Config file \"#{@path}\" does not exist"
@@ -39,6 +47,8 @@ module RBatch
39
47
  @hash
40
48
  end
41
49
  end
50
+
51
+ # @return [String]
42
52
  def to_s
43
53
  if @hash.nil?
44
54
  raise RBatch::ConfigException, "Config file \"#{@path}\" does not exist"
@@ -48,6 +58,33 @@ module RBatch
48
58
  end
49
59
  end
50
60
 
61
+ class ConfigElement < Hash
62
+ def initialize(hash)
63
+ hash.each_key do |key|
64
+ if hash[key].class == Hash
65
+ self[key] = ConfigElement.new(hash[key])
66
+ else
67
+ self[key] = hash[key]
68
+ end
69
+ end
70
+ end
71
+
72
+ def[](key)
73
+ if self.has_key?(key)
74
+ super
75
+ else
76
+ if key.class == Symbol
77
+ raise RBatch::ConfigException, "Value of key(:#{key} (Symbol)) does not exist. By any chance, dou you mistake key class Symbol for String?"
78
+ elsif key.class == String
79
+ raise RBatch::ConfigException, "Value of key(\"#{key}\" (String)) does not exist"
80
+ else
81
+ raise RBatch::ConfigException, "Value of key(#{key}) does not exist."
82
+ end
83
+ raise
84
+ end
85
+ end
86
+ end
87
+
51
88
  class RBatch::ConfigException < StandardError ; end
52
89
  end
53
90
 
@@ -7,6 +7,7 @@ require 'rbatch/config'
7
7
  require 'rbatch/cmd'
8
8
 
9
9
  module RBatch
10
+ # @private
10
11
  class Controller
11
12
  attr :vars,:config,:common_config,:journal,:user_logs
12
13
  def initialize
@@ -1,6 +1,7 @@
1
1
  require 'tmpdir'
2
2
  require 'tempfile'
3
3
  module RBatch
4
+ # @private
4
5
  module DoubleRunChecker
5
6
  module_function
6
7
  def lock_file_name(p)
@@ -20,5 +21,6 @@ module RBatch
20
21
  end
21
22
  end
22
23
 
24
+ # @private
23
25
  class DoubleRunCheckException < Exception ; end
24
26
  end
@@ -1,4 +1,5 @@
1
1
  module RBatch
2
+ # @private
2
3
  class Journal
3
4
  @@def_vars
4
5
  def Journal.def_vars=(a) ; @@def_vars=a ; end
data/lib/rbatch/log.rb CHANGED
@@ -6,6 +6,7 @@ require 'net/smtp'
6
6
 
7
7
  module RBatch
8
8
  class Log
9
+ # @private
9
10
  @@FORMATTER = proc do |severity, datetime, progname, msg|
10
11
  head = "[#{datetime}] [" + sprintf("%-5s",severity) +"]"
11
12
  if msg.is_a? Exception
@@ -14,6 +15,8 @@ module RBatch
14
15
  "#{head} #{msg}\n"
15
16
  end
16
17
  end
18
+
19
+ # @private
17
20
  @@STDOUT_FORMATTER = proc do |severity, datetime, progname, msg|
18
21
  head = "[" + sprintf("%-5s",severity) +"]"
19
22
  if msg.is_a? Exception
@@ -22,6 +25,8 @@ module RBatch
22
25
  "#{head} #{msg}\n"
23
26
  end
24
27
  end
28
+
29
+ # @private
25
30
  @@LOG_LEVEL_MAP = {
26
31
  "debug" => Logger::DEBUG,
27
32
  "info" => Logger::INFO,
@@ -29,20 +34,82 @@ module RBatch
29
34
  "error" => Logger::ERROR,
30
35
  "fatal" => Logger::FATAL
31
36
  }
37
+
38
+ # @private
32
39
  @@def_vars
33
- def Log.def_vars=(a)
34
- raise ArgumentError, "type mismatch: #{a} for #RBatch::Variables" if ! a.kind_of?(RBatch::Variables)
35
- @@def_vars=a
40
+
41
+ # @private
42
+ # @param [RBatch::Variables] v
43
+ def Log.def_vars=(v)
44
+ raise ArgumentError, "type mismatch: #{v} for #RBatch::Variables" if ! v.kind_of?(RBatch::Variables)
45
+ @@def_vars=v
36
46
  end
47
+
48
+ # @private
49
+ # @return [RBatch::Variables]
37
50
  def Log.def_vars ; @@def_vars ; end
51
+
52
+ # @private
38
53
  @@journal
39
- def Log.journal=(a) ; @@journal=a ; end
40
54
 
55
+ # @private
56
+ # @param [RBatch::Journal] j
57
+ def Log.journal=(j) ; @@journal=j ; end
58
+
59
+ # @private
41
60
  @vars
61
+
62
+ # @private
42
63
  @opt
64
+
65
+ # @private
43
66
  @log
67
+
68
+ # @private
44
69
  @stdout_log
45
70
 
71
+ # External command wrapper
72
+ # @option opt [String] :dir Output directory
73
+ # @option opt [String] :name
74
+ # Log file name.
75
+ # Default is "<date>_<time>_<prog>.log".
76
+ # <data> is replaced to YYYYMMDD date string
77
+ # <time> is replaced to HHMMSS time string
78
+ # <prog> is replaced to Program file base name (except extention).
79
+ # <host> is replaced to Hostname.
80
+ # @option opt [Boolean] :append
81
+ # @option opt [String] :level
82
+ # Effective values are "debug","info","wran","error",and "fatal".
83
+ # @option opt [Boolean] :stdout
84
+ # Print log string both log file and STDOUT
85
+ # @option opt [Boolean] :delete_old_log
86
+ # If this is true, delete old log files when this is called.
87
+ # If log filename does not include "<date>", do nothing.
88
+ # @option opt [Integer] :delete_old_log_date
89
+ # @option opt [Boolean] :send_mail
90
+ # When log.error(str) is called,
91
+ # log.fatal(str) is called , or rescue an Exception,
92
+ # send e-mail.
93
+ # @option opt [String] :mail_to
94
+ # @option opt [String] :mail_from
95
+ # @option opt [String] :mail_server_host
96
+ # @option opt [Integer] :mail_server_port
97
+ # @raise [RBatch::LogException]
98
+ # @yield [log] RBatch::Log instance
99
+ # @return [RBatch::Log]
100
+ # @example
101
+ # require 'rbatch'
102
+ # RBatch::Log.new{ |log|
103
+ # log.info "info string"
104
+ # log.error "error string"
105
+ # raise "exception" # => rescued in this block
106
+ # }
107
+ # @example use option
108
+ # require 'rbatch'
109
+ # RBatch::Log.new({:name => "hoge.log"}){ |log|
110
+ # log.info "info string"
111
+ # }
112
+
46
113
  def initialize(opt=nil)
47
114
  @opt = opt
48
115
  @vars = @@def_vars.clone
@@ -78,7 +145,7 @@ module RBatch
78
145
  @stdout_log.formatter = @@STDOUT_FORMATTER
79
146
  end
80
147
  # delete old log
81
- self.delete_old_log(@vars[:log_delete_old_log_date]) if @vars[:log_delete_old_log]
148
+ delete_old_log(@vars[:log_delete_old_log_date]) if @vars[:log_delete_old_log]
82
149
  # Start logging
83
150
  @@journal.put 1,"Logging Start: \"#{@path}\""
84
151
  @@journal.add_log(self)
@@ -89,61 +156,63 @@ module RBatch
89
156
  if e.status == 0
90
157
  exit 0
91
158
  else
92
- self.fatal(e)
93
- self.fatal("Caught SystemExit. RBatch Exit with status " + e.status.to_s)
159
+ fatal(e)
160
+ fatal("Caught SystemExit. RBatch Exit with status " + e.status.to_s)
94
161
  exit e.status
95
162
  end
96
163
  rescue Exception => e
97
- self.fatal(e)
98
- self.fatal("Caught exception. RBatch Exit with status 1")
164
+ fatal(e)
165
+ fatal("Caught exception. RBatch Exit with status 1")
99
166
  exit 1
100
167
  ensure
101
- self.close
168
+ close
102
169
  end
103
170
  end
104
171
  end
105
172
 
106
- def fatal(a)
107
- @stdout_log.fatal(a) if @vars[:log_stdout]
108
- @log.fatal(a)
109
- send_mail(a) if @vars[:log_send_mail]
110
- end
111
-
112
- def error(a)
113
- @stdout_log.error(a) if @vars[:log_stdout]
114
- @log.error(a)
115
- send_mail(a) if @vars[:log_send_mail]
173
+ # Out put log with ERROR level
174
+ # @param [String] str log string
175
+ def fatal(str)
176
+ @stdout_log.fatal(str) if @vars[:log_stdout]
177
+ @log.fatal(str)
178
+ send_mail(str) if @vars[:log_send_mail]
116
179
  end
117
180
 
118
- def warn(a)
119
- @stdout_log.warn(a) if @vars[:log_stdout]
120
- @log.warn(a)
181
+ # Out put log with ERROR level
182
+ # @param [String] str log string
183
+ def error(str)
184
+ @stdout_log.error(str) if @vars[:log_stdout]
185
+ @log.error(str)
186
+ send_mail(str) if @vars[:log_send_mail]
121
187
  end
122
188
 
123
- def info(a)
124
- @stdout_log.info(a) if @vars[:log_stdout]
125
- @log.info(a)
189
+ # Out put log with WARN level
190
+ # @param [String] str log string
191
+ def warn(str)
192
+ @stdout_log.warn(str) if @vars[:log_stdout]
193
+ @log.warn(str)
126
194
  end
127
195
 
128
- def debug(a)
129
- @stdout_log.debug(a) if @vars[:log_stdout]
130
- @log.debug(a)
196
+ # Out put log with INFO level
197
+ # @param [String] str log string
198
+ def info(str)
199
+ @stdout_log.info(str) if @vars[:log_stdout]
200
+ @log.info(str)
131
201
  end
132
202
 
133
- def journal(a)
134
- @log.info("[RBatch] " + a)
203
+ # Out put log with DEBUG level
204
+ # @param [String] str log string
205
+ def debug(str)
206
+ @stdout_log.debug(str) if @vars[:log_stdout]
207
+ @log.debug(str)
135
208
  end
136
209
 
137
- def close
138
- @log.close
210
+ # @private
211
+ def journal(str)
212
+ @log.info("[RBatch] " + str)
139
213
  end
140
214
 
141
- # Delete old log files.
142
- # If @vars[:log_name] is not include "<date>", then do nothing.
143
- #
144
- # ==== Params
145
- # - +date+ (Integer): The day of leaving log files
146
- #
215
+ private
147
216
  def delete_old_log(date = 7)
148
217
  if Dir.exists?(@vars[:log_dir]) && @vars.raw_value(:log_name).include?("<date>")
149
218
  Dir::foreach(@vars[:log_dir]) do |file|
@@ -160,9 +229,10 @@ module RBatch
160
229
  end
161
230
  end
162
231
 
163
- private
232
+ def close
233
+ @log.close
234
+ end
164
235
 
165
- # send mail
166
236
  def send_mail(msg)
167
237
  body = <<EOT
168
238
  From: <#{@vars[:log_mail_from]}>
@@ -1,6 +1,7 @@
1
1
  require 'tmpdir'
2
2
  require 'yaml'
3
3
  module RBatch
4
+ # @private
4
5
  class RunConf
5
6
  attr :path,:opt
6
7
  @yaml
@@ -2,6 +2,7 @@ require 'pathname'
2
2
  require 'rbatch/run_conf'
3
3
 
4
4
  module RBatch
5
+ # @private
5
6
  class Variables
6
7
  attr :vars,:run_conf,:merged_opt
7
8
  def initialize(run_conf=nil)
@@ -74,5 +75,6 @@ module RBatch
74
75
  end
75
76
 
76
77
  end
78
+ # @private
77
79
  class RBatch::VariablesException < StandardError ; end
78
80
  end
@@ -1,3 +1,3 @@
1
1
  module RBatch
2
- VERSION = "2.1.6"
2
+ VERSION = "2.1.7"
3
3
  end
data/lib/rbatch.rb CHANGED
@@ -3,15 +3,61 @@ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
3
3
  require 'rbatch/controller'
4
4
 
5
5
  module RBatch
6
+ # @private
6
7
  @@ctrl = nil
8
+
7
9
  module_function
10
+
11
+ # @private
8
12
  def init
9
13
  @@ctrl = RBatch::Controller.new
10
14
  end
15
+
16
+ # @private
11
17
  def ctrl ; @@ctrl ; end
18
+
19
+ # @private
12
20
  def vars ; @@ctrl.vars ; end
21
+
22
+ # Return Config Object
23
+ # @raise [RBatch::ConfigException]
24
+ # @return [RBatch::Config]
25
+ # @example RB_HOME/conf/hoge.yaml
26
+ # key: value
27
+ # array:
28
+ # - item1
29
+ # - item2
30
+ # - item3
31
+ # @example ${RB_HOME}/bin/hoge.rb
32
+ # p RBatch.config["key"] # => "value"
33
+ # p RBatch.config["array"] # => ["item1", "item2", "item3"]
34
+ # p RBatch.config["not_exist"] # => Raise RBatch::ConfigException
13
35
  def config ; @@ctrl.config ; end
36
+
37
+ # Return Common-Config Object
38
+ # @raise [RBatch::ConfigException]
39
+ # @return [RBatch::Config]
40
+ # @example RB_HOME/conf/common.yaml
41
+ # key: value
42
+ # array:
43
+ # - item1
44
+ # - item2
45
+ # - item3
46
+ # @example ${RB_HOME}/bin/hoge.rb
47
+ # p RBatch.common_config["key"] # => "value"
48
+ # p RBatch.common_config["array"] # => ["item1", "item2", "item3"]
49
+ # p RBatch.common_config["not_exist"] # => Raise RBatch::ConfigException
14
50
  def common_config ; @@ctrl.common_config ; end
51
+
52
+ # Shortcut of RBatch::Cmd.new(cmd_str,opt).run
53
+ # @see RBatch::Cmd
54
+ # @example
55
+ # r = RBatch.cmd("ls")
56
+ # p r.stdout # => "fileA\nfileB\n"
57
+ # p r.stderr # => ""
58
+ # p r.status # => 0
59
+ # @example
60
+ # r = RBatch.cmd("rsync /foo /bar",{:timeout => 10})
15
61
  def cmd(cmd_str,opt=nil) ; @@ctrl.cmd(cmd_str,opt) ; end
16
62
  end
17
63
 
@@ -65,3 +65,29 @@ describe RBatch::Config do
65
65
  }.to raise_error(RBatch::ConfigException)
66
66
  end
67
67
  end
68
+
69
+ describe RBatch::ConfigElement do
70
+ it "" do
71
+ hash = {
72
+ "a" => "av" ,
73
+ "b" => {
74
+ "c" => "cv",
75
+ "d" => {
76
+ "e" => "ev",
77
+ "f" => [1,2,3]
78
+ }
79
+ }
80
+ }
81
+ ce = RBatch::ConfigElement.new(hash)
82
+ expect(ce["a"]).to eq "av"
83
+ expect(ce["b"].class).to eq RBatch::ConfigElement
84
+ expect(ce["b"]["c"]).to eq "cv"
85
+ expect(ce["b"]["d"].class).to eq RBatch::ConfigElement
86
+ expect(ce["b"]["d"]["e"]).to eq "ev"
87
+ expect(ce["b"]["d"]["f"][1]).to eq 2
88
+ expect { ce["noexist"] }.to raise_error(RBatch::ConfigException)
89
+ expect { ce["noexist"]["noexist"] }.to raise_error(RBatch::ConfigException)
90
+ expect { ce["b"]["noexist"] }.to raise_error(RBatch::ConfigException)
91
+ expect { ce["b"]["d"]["noexist"] }.to raise_error(RBatch::ConfigException)
92
+ end
93
+ end