aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers/debug_helper.rb
blob: 20de7e465f0b67b2bb7173bcc9aad51df0315277 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module ActionView
  module Helpers
    # Provides a set of methods for making it easier to debug Rails objects.
    module DebugHelper
      # Returns a <pre>-tag that has +object+ dumped by YAML. This creates a very
      # readable way to inspect an object.
      #
      # ==== Example
      #  my_hash = {'first' => 1, 'second' => 'two', 'third' => [1,2,3]}
      #  debug(my_hash)
      #
      #  => <pre class='debug_dump'>--- 
      #  first: 1
      #  second: two
      #  third: 
      #  - 1
      #  - 2
      #  - 3
      #  </pre>
      def debug(object)
        begin
          Marshal::dump(object)
          "<pre class='debug_dump'>#{h(object.to_yaml).gsub("  ", "&nbsp; ")}</pre>"
        rescue Exception => e  # errors from Marshal or YAML
          # Object couldn't be dumped, perhaps because of singleton methods -- this is the fallback
          "<code class='debug_dump'>#{h(object.inspect)}</code>"
        end
      end
    end
  end
end