Rails Footnotes | ページのフッターにデバッグ情報を表示

Rails Footnotes は、開発環境にて表示したページのフッターに、利用されたパーシャルファイル、スタイルシート、js ファイル、params や インスタンス変数などの値、発行された SQL などのデバッグ情報を表示してくれる Gem です。

## リソース

* [GitHub](https://github.com/josevalim/rails-footnotes)
* [RubyGems.org](http://rubygems.org/gems/rails-footnotes)
* [The Ruby Toolbox](https://www.ruby-toolbox.com/projects/rails-footnotes)

## インストール

Gemfile に `rails-footnotes` を追記します。

```ruby:Gemfile
group :development do
  gem 'rails-footnotes'
end
```

インストールします。

```bash
$ bundle install
```

## 初期設定

必要となるファイルを自動生成します。

```bash
$ rails generate rails_footnotes:install
```

## 利用方法

たったこれだけで、ページのフッターに、以下のようなデバッグ情報が表示されるようになります。

![rails-footnotes.png](https://qiita-image-store.s3.amazonaws.com/0/1097/8eb77271-52eb-0b15-7133-fb0dd12e808d.png "rails-footnotes.png")

表示されるデバッグ情報は、以下の通りです。

* Controller
* Patrials
* Stylesheets
* Javascripts
* Assigns
* Session
* Cookies
* Params
* Filters
* Routes
* Env
* Queries
* Log
* General Debug

## サーバーログに DEPRECATION WARNING が大量に出力される問題 (2013/10/09 現在)

以下のイシューで取り上げられて、プルリク申請がされています。

* [Usage of Hash#diff prints a million deprecation warnings to server log by tommireinikainen · Pull Request #93 · josevalim/rails-footnotes](https://github.com/josevalim/rails-footnotes/pull/93)

プルリクが取り込まれていない場合は、Gemfile を書き換えてインストールすることで、上記の問題を解消しましょう。

```ruby:Gemfile
group :development do
  gem 'rails-footnotes', git: 'git://github.com/tommireinikainen/rails-footnotes.git'
end
```

```bash
$ bundle install
```

## Haml / Slim で Partials が常に 0 となってしまう問題 (2013/10/09 現在)

表示したページにてパーシャルが利用されている場合、Partials に表示されるはずですが、Haml / Slim を利用している場合、常に 0 となってしまう問題があります。
以下のイシューで取り上げられて、解決方法が掲載されています。

* [Haml files not counted in Partials note · Issue #83 · josevalim/rails-footnotes](https://github.com/josevalim/rails-footnotes/issues/83)

自動生成された `rails-footnotes` の設定ファイルに、以下を追記します。

```diff:rails_footnotes.rb
if defined?(Footnotes) && Rails.env.development?
  Footnotes.run!

+  Footnotes::Notes::LogNote::LoggingExtensions.module_eval do
+    def add(*args, &block)
+      super
+      logged_message = args[2] + "\n"
+      Footnotes::Notes::LogNote.log(logged_message)
+      logged_message
+    end
+  end
end
```

上記のコードを追記することで、Partials が正しくカウントされるようになります。

## デバッグ情報をクリックして Sublime Text 2 で直接ファイルを開きたい

Controllers や Patrials 、Stylesheet などのデバッグ情報は、直接ファイルを開いて編集することが可能です。
ここでは、Sublime Text 2 でファイルを開けるようにしてみましょう。

デフォルトでは Text Mate でファイルを開く設定になっているので、`rails-footnotes` の設定ファイルを書き換えて、Sublime Text 2 でファイルを開くようにします。

```diff:rails_footnotes.rb
if defined?(Footnotes) && Rails.env.development?
  Footnotes.run!

  Footnotes::Notes::LogNote::LoggingExtensions.module_eval do
    def add(*args, &block)
      super
      logged_message = args[2] + "\n"
      Footnotes::Notes::LogNote.log(logged_message)
      logged_message
    end
  end

+  Footnotes::Filter.prefix = 'subl://open?url=file://%s&line=%d&column=%d'
end
```

次に、`subl-handler` というアプリをインストールして、Sublime Text 2 のコマンド `subl` のパスを通します。

* [asuth/subl-handler](https://github.com/asuth/subl-handler)

私の環境の場合、上記のアプリをインストールしただけでは、Sublime Text 2 で上手くファイルを開くことが出来ませんでした。
更に調べてみると、RailsCasts 内にも同様のコメントがあり、そこで配布されていた `subl-handler` をインストールすることで、正常にファイルが開けるようになりました。

* [#402 Better Errors & RailsPanel - RailsCasts](http://railscasts.com/episodes/402-better-errors-railspanel?view=comments#comment_162317)

もし、公式の `subl-handler` でファイルが開くことが出来ない場合は、こちらも試してみると良いかもしれません。

## サンプルアプリ

今回作成したサンプルアプリです。
参考までに。

* [FakeStarBaby/sample-rails-footnotes](https://github.com/FakeStarBaby/sample-rails-footnotes)

## あわせて読みたい

* [rails-footnotes デバックで見たい情報をフッターに表示してくれるGem [Rails] - 酒と泪とRubyとRailsと](http://morizyun.github.io/blog/rails-footnotes-gem-ruby/)