Class: Speedup::Middleware::SpeedupBody

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/speedup/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(rack_body, redirects = []) ⇒ SpeedupBody

Returns a new instance of SpeedupBody.



41
42
43
44
# File 'lib/speedup/middleware.rb', line 41

def initialize(rack_body, redirects=[])
  @rack_body = rack_body
  @redirects = redirects
end

Instance Method Details

#bar_htmlObject



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/speedup/middleware.rb', line 89

def bar_html
  str = "#{styles}" +
        '<div id="speedup_rails_bar"></div>' +
        "<script>#{javascript}" +
        " loadRequestData('#{SpeedupRails::Engine.routes.url_helpers.result_path(Speedup.request.id)}');"
  @redirects.each_with_index do |req_id, idx|
    str << " loadRequestData('#{SpeedupRails::Engine.routes.url_helpers.result_path(req_id, redirect: idx)}');"
  end
  str << "if( typeof jQuery !== 'undefined' ) {
        jQuery(document).ajaxComplete(function(evt, xhr, settings){
          var request_id = xhr.getResponseHeader('X-Request-Id');
          if( request_id && !settings.url.match('#{SpeedupRails::Engine.routes.url_helpers.result_path('')}') )
            loadRequestData('#{SpeedupRails::Engine.routes.url_helpers.result_path('REQUEST_ID')}'.replace('REQUEST_ID', request_id));
        });
      }"
  str << '</script>'
  str
end

#bodyObject



60
61
62
# File 'lib/speedup/middleware.rb', line 60

def body
  @rack_body.body.sub(/<\/body>/, bar_html+'</body>')
end

#closeObject



64
65
66
# File 'lib/speedup/middleware.rb', line 64

def close
  @rack_body.close if @rack_body && @rack_body.respond_to?(:close)
end

#each(*params, &block) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/speedup/middleware.rb', line 50

def each(*params, &block)
  @rack_body.each do |response_row|
    if response_row =~ /<\/body>/
      yield response_row.sub(/<\/body>/, bar_html+'</body>')
    else
      yield response_row
    end
  end
end

#render_bar?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/speedup/middleware.rb', line 46

def render_bar?
  any?{|row| row =~ /<\/body>/ }
end

#respond_to?(method, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
71
72
73
74
# File 'lib/speedup/middleware.rb', line 68

def respond_to?(method, include_private = false)
  if method.to_s == 'to_path'
    @rack_body.respond_to?(method)
  else
    super
  end
end

#to_aObject



80
81
82
# File 'lib/speedup/middleware.rb', line 80

def to_a
  @rack_body.to_ary
end

#to_aryObject



84
85
86
# File 'lib/speedup/middleware.rb', line 84

def to_ary
  to_a
end

#to_pathObject



76
77
78
# File 'lib/speedup/middleware.rb', line 76

def to_path
  @rack_body.to_path
end