rbatch 2.1.6 → 2.1.7

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.
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