kanamei-keystone 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/lib/keystone.rb CHANGED
@@ -11,7 +11,7 @@ autoload :Moji , 'moji'
11
11
 
12
12
  module Keystone
13
13
 
14
- VERSION = '0.0.11'
14
+ VERSION = '0.0.12'
15
15
 
16
16
  autoload :StringUtil , 'keystone/string_util'
17
17
  autoload :Batch , 'keystone/batch'
@@ -3,19 +3,47 @@ require 'digest/md5'
3
3
 
4
4
  module Keystone::Batch
5
5
  #
6
+ # = バッチをざくっと書きたい時用モジュール
7
+ #
8
+ # 基本的にはexecuteメソッドにバッチ処理をブロックで渡す
9
+ #
10
+ # == 定数
6
11
  #
7
- # ●定数
8
12
  # ERROR_MAIL_TO (エラーメール送信先) 設定しておけば自動でエラーメールを送信してくれる
13
+ #
9
14
  # ERROR_MAIL_FROM (エラーメール送信元) 設定されてない場合はERROR_MAIL_TOを使用
15
+ #
10
16
  # ERROR_MAIL_STMP_ADDR (エラーメール送信SMTPアドレス) 設定されてない場合は"127.0.0.1"
11
- # ERROR_MAIL_STMP_PORT (エラーメール送信SMTPポート) 設定されてない場合は25
12
17
  #
18
+ # ERROR_MAIL_STMP_PORT (エラーメール送信SMTPポート) 設定されてない場合は25
13
19
  #
14
20
  module Base
21
+ # [double_process_check]
22
+ # 2重起動チェック
23
+ # [auto_recover]
24
+ # 2重起動チェック用のpidファイルがすでに存在しているがプロセスは見あたらない
25
+ # そんな時、そのまま実行を続けるかどうか
26
+ #
27
+ #
28
+ # バッチの主処理をこのメソッドへのブロック引数として定義してください
29
+ #
30
+ # require 'rubygems'
31
+ # require 'keystone'
32
+ #
33
+ # include Keystone::Batch::Base
34
+ #
35
+ # # ERROR_MAIL_TOを設定しておけば自動でエラーメールが送信される
36
+ # ERROR_MAIL_TO = ARGV[0]
37
+ #
38
+ # execute() do
39
+ # info "batch process01"
40
+ # end
41
+ #
15
42
  def execute(double_process_check = true,auto_recover = true,&process)
16
43
  info "start script(#{File.expand_path($0)})"
17
44
  warn "ERROR_MAIL_TO not defined.if you want error mail automatically,set this value." unless Module.constants.include?("ERROR_MAIL_TO")
18
45
  script_started_at = Time.now
46
+ double_process_check_worked = false
19
47
  begin
20
48
  # double process check
21
49
  if double_process_check
@@ -29,11 +57,13 @@ module Keystone::Batch
29
57
  pid_list = `ps -e | awk '{print $1}'`
30
58
  if pid_list =~ /#{pid}/
31
59
  warn "pid:#{pid} still running"
60
+ double_process_check_worked = true
32
61
  return nil
33
62
  else
34
63
  if auto_recover
35
64
  warn "pid file still exists,but process does not found.so process continues"
36
65
  else
66
+ double_process_check_worked = true
37
67
  raise "pid file still exists,but process does not found"
38
68
  end
39
69
  end
@@ -47,12 +77,22 @@ module Keystone::Batch
47
77
  error e
48
78
  send_error_mail(e)
49
79
  ensure
50
- File.delete(pid_file) if double_process_check
80
+ unless double_process_check_worked
81
+ File.delete(pid_file) if double_process_check
82
+ end
51
83
  info "finish script (%1.3fsec)" % (Time.now - script_started_at)
52
84
  end
53
85
  end
54
86
 
55
- def send_error_mail(error)
87
+ #
88
+ # = エラーメール送信メソッド
89
+ # エクセプションを何も考えずにメールにて送信する
90
+ #  各種メール送信属性は定数にて渡す
91
+ #
92
+ # [exception]
93
+ # エクセプションクラスインスタンス
94
+ #
95
+ def send_error_mail(exception)
56
96
  if Module.constants.include?("ERROR_MAIL_TO")
57
97
  host = Keystone::Os.get()
58
98
  title = %|error occur at "#{host.hostname}" [#{error.message}]|
@@ -65,9 +105,9 @@ module Keystone::Batch
65
105
 
66
106
  body = <<-BODY
67
107
  ==== error message ====
68
- #{error.message}
108
+ #{exception.message}
69
109
  ====== backtrace ======
70
- #{error.backtrace.join("\n")}
110
+ #{exception.backtrace.join("\n")}
71
111
  ===== environment =====
72
112
  #{host.dump}
73
113
  BODY
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kanamei-keystone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - kanamei