@Konboi memo

主に技術に関してつらつらと。

perlのモジュールをrubyに移植してみた

移植したモジュール

移植したもPerlのモジュールはScript::Ichigeki になります。

こちらのモジュールの使い方は

Script::Ichigeki - 相手は死ぬ

こちらの記事を参考にしていただければと思います。

記事内の言葉を抜粋すると

  • クリティカルな一発スクリプト(ゲームの報酬付与処理、データ修正処理等)を
  • 実行前に実行確認プロンプトを表示して
  • 実行ログを残しつつ
  • 再実行を防ぎたい(特にシェル履歴からの誤爆とか)
  • 後々の参照のために、スクリプト自体は残しておきたい

というニーズを満たしてくれるモジュールです。 素晴らしいですね。

なんでこのモジュールにしたのか

  • ソースコード全部で100行程度と短かった
  • キラキラネームの多いgemのなかでも負けないインパクトがあると思った(笑)
  • プロダクトで使ってるので中身見ておく意味でもいいなと。

作ったgem

移植したものは

ichigeki

こちらです。

使い方

使い方は sample.rb に書いてある感じで、こんな感じです。

require 'ichigeki'

Ichigeki.hissatsu(
  dialog_message: "殺っちゃう??",
  log_file_postfix: '.ichigeki',
  exec_date: "2014-03-08"
)

puts 'ichigeki: グハッ'
bundle exec ruby sample.rb
# 殺っちゃう?? [y/n] [n] y
$ less .sample.rb.ichigeki
# This log file is generated by ichigeki.start: 2014-03-08 06:09:49 +0000
---
ichigeki: グハッ

---
end: 2014-03-08 06:09:56 +0000

ソース内で Ichigeki.hissatsu() を宣言しないと行けないのが、Perlモジュールと違うところですかね。

require ‘ichigeki’ の際に引数を渡せればperlと同じような共同を再現できそうな感じではありますが。 とりあえずはこんな感じになっております。

残されたTODOが

  • 時刻が +0000 にデフォルトでなってしまってるのでそこを実行してる環境に合わせてよしなにしたい
  • 標準出力をlogファイルにだしているので、ログファイルにも残しつつ、標準出力にも出したい。
  • テスト

と以上3つが宿題となっる状態です… これが解決できたら gem push したいですね。

追記 2014-03-08 16:00

時刻が +0000 になるのは作業環境であるvagrant上でlocaltimeを変えてないだけだった...

変えたら普通に自分の実行環境の時間になった。

初めてのRuby

初めてのRuby