2013/12/07

Railsのログに出力されるパラメータとSQLを整形するgemを作った

最初に

この記事は Ruby on Rails Advent Calendar 2013 - Qiita [キータ] の7日目の記事です。
前日は a_suenami さんの Railsでサービスとフォームを導入してみる話 - assertInstanceOf('Engineer', $a_suenami) です。

本題

こういう gem を作りました。

pinzolo/rails-flog - Github
rails-flog - RubyGems.org

Gemfile に下記を追加して bundle install するだけで、ログに出力されるパラメータとSQLが整形して出力されるようになります。

gem 'rails-flog', :require => 'flog'

Redmine でのスクリーンショットはこんな感じ。

使用前

使用後

Railsアプリケーションに tmp/no-flog.txt を配置すれば一時的に整形をやめることもできます。

残念なところ

  • 実装が結構強引。二重の特異メソッドとかどうなんでしょうね。完全に元の実装依存だし。
  • パラメータはスペース整形だけど、SQLはタブ整形。こいつ のせい。

作った経緯

  1. 先日、西脇.rb & 東灘.rb 合同もくもく会 7th - 西脇.rb & 東灘.rb に参加した時に、@jnchito さんが、色々と awesome_print で出力するWebサービスを作成されてて、その際にログに出力される複雑なパラメータを手作業で整形するのがタルいみたいな事をおっしゃってまして、「あるある」と思っていた。
  2. んで、複雑なSQLもタルいよなー、整形してログに出力させるぐらいならできんじゃね?
  3. anbt-sql-formatter てのがあるじゃない。イケそう。
  4. 誰か作ってんじゃない?と調べてみると Railsのログに出力されるパラメータやSQLを整形する - ( ꒪⌓꒪) ゆるよろ日記 というそのものなものが見つかる。しかも自分でブクマ済み。
  5. もう少し調べてみるとどうやら同等の機能をもつ gem は存在していないみたい。
  6. 作ってみるか。

思うところ

我々エンジニアは誰しも素晴らしいプロダクトやサービスを作りたいと思っていると思います。
そして多くの人が時間、技術力、アイデア、ビジョン等々の不足であきらめているのでしょう。
でもエンジニアの本質は「素晴らしい物を生み出す」よりも、「一歩進める」ことだと思っています。
ひとが考えもしない方向へ一歩進められたり、一歩がとっても大きい人が素晴らしいプロダクトやサービスを生み出せるのでしょう。
出来なかったことをできるようにしたり、自動化したり、簡略化したり、みんな一歩進めた結果です。
rails-flogも、アイデアも実装手段も他の巨人に乗っかったものですが、gemにするという一歩だけ進めることが出来ました。
一歩進めるだけなら誰にでもできるでしょう、さああなたも身近なものを一歩進めてみてください。

Next

明日は znz さんです。

0 件のコメント :

コメントを投稿