Module: RailsViewAnnotator

Defined in:
lib/rails_view_annotator/version.rb,
lib/rails_view_annotator/action_view/partial_renderer.rb

Defined Under Namespace

Modules: InstanceMethods Classes: ContextError

Constant Summary collapse

VERSION =
"0.0.6"

Class Method Summary collapse

Class Method Details

.augment_partial_renderer(klass) ⇒ Object



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
# File 'lib/rails_view_annotator/action_view/partial_renderer.rb', line 5

def self.augment_partial_renderer klass
  render = klass.instance_method :render
  klass.send(:define_method, :render) do |*args|
    inner = render.bind(self).call(*args)
    short_identifier = Pathname.new(identifier).relative_path_from Rails.root

    backtrace = nil
    begin
      raise ContextError
    rescue ContextError => e
      backtrace = e.backtrace
    end

    r = /^#{Regexp.escape(Rails.root.to_s)}\/([^:]+:\d+)/
    backtrace.find { |line| line.match r }
    called_from = context = $1

    descriptor = "#{short_identifier} (from #{called_from})"

    if not inner.blank?
      "<!-- begin: #{descriptor} -->\n#{inner}<!-- end: #{descriptor} -->".html_safe
    end
  end
  klass.send(:include, InstanceMethods)
end