LoginSignup
2
2

More than 5 years have passed since last update.

Rubyスクリプトでレコードのフラグを監視して変更を通知する

Last updated at Posted at 2015-02-22

数十分かかる処理の終了をレコードのフラグ値で検知しなければならない場面がありました。
当初はタイマーをかけて、5分毎に手動でselectを発行して目視確認してましたが、面倒なので自動化しました。

必要なもの

  • Ruby
  • oci8 (gem)

スクリプト

check_upload_flg.rb
# coding : sjis
require 'oci8'

user = 'user'
pass = 'pass'
tns  = 'tns'

sql =<<SQL
select UPLOAD_FLG
from UPLOAD_MNG
where id = 3
SQL

begin
  conn = OCI8.new(user, pass, tns)
  finished = false

  loop do
    conn.exec(sql){|row| finished = (row.first == 1) }
    if finished
      `msg gomao9 /time:3600 アップロード終了`
      break
    end

    sleep(30)
  end

ensure
  conn.logoff if conn
end

conn.exec(sql)~ のあたりはもっと綺麗に書けそうですが、hackなので動けばよし。

msg は、ダイアログで通知を行うコマンド。初めて知りました。
他のマシンや自分以外のユーザに送る場合には、別途設定やオプション指定が必要みたいですが、自分へのリマインド目的ならmsg ユーザ名 メッセージで十分。

※追記
msgコマンドに /time:時間 オプションを指定すると、ダイアログが自動で消去されるまでの時間を設定できます。デフォルトは60(秒)。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2