class Rack::Refresh
Constants
- VERSION
Public Class Methods
new(app, url: nil, interval: 0, **options, &block)
click to toggle source
# File lib/rack/refresh.rb, line 5 def initialize(app, url: nil, interval: 0, **options, &block) @app = app @url = url @interval = interval instance_eval(&block) if block_given? end
Public Instance Methods
_call(env)
click to toggle source
# File lib/rack/refresh.rb, line 16 def _call(env) response = @app.call(env) route = find_refresh_route_from(env) refresh_for(response, route[:interval], route[:url]) if route response end
call(env)
click to toggle source
# File lib/rack/refresh.rb, line 12 def call(env) dup._call(env) end
refresh(path = nil, interval: nil, url: nil, &matcher)
click to toggle source
# File lib/rack/refresh.rb, line 23 def refresh(path = nil, interval: nil, url: nil, &matcher) current_route = {interval: interval || @interval, url: url || @url} raise ArgumentError, "`:url` must be set in refresh" unless current_route[:url] return unless path || block_given? current_route[:path] = path current_route[:matcher] = matcher routes << current_route end
Private Instance Methods
find_refresh_route_from(env)
click to toggle source
# File lib/rack/refresh.rb, line 36 def find_refresh_route_from(env) path_info = env["PATH_INFO"] routes.find{|route| route[:path] ? (route[:path] === path_info) : route[:matcher].call(env) } end
refresh_for(response, interval, url)
click to toggle source
# File lib/rack/refresh.rb, line 32 def refresh_for(response, interval, url) response[1]["Refresh"] = "#{interval}; url=#{url}" end
routes()
click to toggle source
# File lib/rack/refresh.rb, line 41 def routes @routes ||= [] end