読者です 読者をやめる 読者になる 読者になる

Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

デバッグ時のお助けGemを作ってRubygemsに公開してみた

Ruby

プログラムを書いて自分の思い通りに動かない時にこんな事やりません?

  • 変数や配列などの値が何なのか、片っ端からprintしてみる
  • if文や条件分岐などで、どこを通っているのか調べる為に、何かしらのprint文を埋め込んで、何処を通ったか可視化して調べてみる
  • Rubyの場合、オブジェクトが何のクラスなのか、とりあえず puts hoge.class で出力して調べてみる

いわゆる、Printデバッグってやつですね。自分で作っているプログラムはそんなに大きくない事と、テスト駆動する程までもなかったり、そもそもテストの書き方もイマイチピンときていなかったり。

で、自分用にデバッグを助ける為に、ログを書き出すGemを作ってみました。

どんな事が出来るか

任意のログファイルを生成し、それに色んな値を書き出すクラスを作ってみました。 プログラムの冒頭部分でオブジェクトを生成します。引数には、書き出すログのファイルパスを指定します。

プログラム内の任意の場所で、

  • v メソッド:引数で渡した変数などの値をログに出力する
  • c メソッド:引数で渡したオブジェクトのクラス名、親クラス名をログに出力
  • f メソッド:’ここ通りましたよ’フラグをログに出力

する事ができます。

色々思案したこと

  • あくまで一時的な用途なので、メソッド名は最短の1文字にした。
  • 今回はテストを書いてみた。
  • 英語は全く使えないので、Google翻訳を使って苦しい文を乗せた

bundlerを使ってGemを公開するまでの流れ

  1. bundleを使って、ひな形を作る

    bundle gem gem_name --test

  2. libディレクトリの直下の.rbファイルに、moduleを定義し、中に目的のClass定義を書く。
  3. specディレクトリ直下に、spec_gem_name.rbファイルを作成し、テストを書く。
  4. gem_name.gemspecファイルを編集して、gemの内容等を英語で書く。編集内容はこんな感じ
  5. github用にREADME.mdも編集する。
  6. rake buildコマンドでビルドして
  7. rake installコマンドでローカル環境にインストールして動くか試す。
  8. Githubにpushする
  9. rake release でrubygems.orgに公開する

出来上がったGemは、rubygebs.orgGithubに上げてみました。