Sha256: 80d4a19c76d801bf27769d5b22b77ba69e259032c28d2f18297de8c7338b21c7
Contents?: true
Size: 875 Bytes
Versions: 2
Compression:
Stored size: 875 Bytes
Contents
$: << File.expand_path(File.dirname(__FILE__)) require 'rack-rewrite/rule' module Rack # A rack middleware for defining and applying rewrite rules. In many cases you # can get away with rack-rewrite instead of writing Apache mod_rewrite rules. class Rewrite def initialize(app, &rule_block) @app = app @rule_set = RuleSet.new @rule_set.instance_eval(&rule_block) if block_given? end def call(env) if matched_rule = find_first_matching_rule(env) rack_response = matched_rule.apply!(env) # Don't invoke the app if applying the rule returns a rack response return rack_response unless rack_response === true end @app.call(env) end private def find_first_matching_rule(env) #:nodoc: @rule_set.rules.detect { |rule| rule.matches?(env) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rack-rewrite-0.2.1 | lib/rack-rewrite.rb |
rack-rewrite-0.2.0 | lib/rack-rewrite.rb |