Instiki 0.16.3: Rails 2.3.0
Instiki now runs on the Rails 2.3.0 Candidate Release. Among other improvements, this means that it now automagically selects between WEBrick and Mongrel. Just run ./instiki --daemon
This commit is contained in:
parent
43aadecc99
commit
4e14ccc74d
893 changed files with 71965 additions and 28511 deletions
109
vendor/rails/actionpack/lib/action_controller/middleware_stack.rb
vendored
Normal file
109
vendor/rails/actionpack/lib/action_controller/middleware_stack.rb
vendored
Normal file
|
@ -0,0 +1,109 @@
|
|||
module ActionController
|
||||
class MiddlewareStack < Array
|
||||
class Middleware
|
||||
def self.new(klass, *args, &block)
|
||||
if klass.is_a?(self)
|
||||
klass
|
||||
else
|
||||
super
|
||||
end
|
||||
end
|
||||
|
||||
attr_reader :args, :block
|
||||
|
||||
def initialize(klass, *args, &block)
|
||||
@klass = klass
|
||||
|
||||
options = args.extract_options!
|
||||
if options.has_key?(:if)
|
||||
@conditional = options.delete(:if)
|
||||
else
|
||||
@conditional = true
|
||||
end
|
||||
args << options unless options.empty?
|
||||
|
||||
@args = args
|
||||
@block = block
|
||||
end
|
||||
|
||||
def klass
|
||||
if @klass.is_a?(Class)
|
||||
@klass
|
||||
else
|
||||
@klass.to_s.constantize
|
||||
end
|
||||
rescue NameError
|
||||
@klass
|
||||
end
|
||||
|
||||
def active?
|
||||
if @conditional.respond_to?(:call)
|
||||
@conditional.call
|
||||
else
|
||||
@conditional
|
||||
end
|
||||
end
|
||||
|
||||
def ==(middleware)
|
||||
case middleware
|
||||
when Middleware
|
||||
klass == middleware.klass
|
||||
when Class
|
||||
klass == middleware
|
||||
else
|
||||
klass == middleware.to_s.constantize
|
||||
end
|
||||
end
|
||||
|
||||
def inspect
|
||||
str = klass.to_s
|
||||
args.each { |arg| str += ", #{arg.inspect}" }
|
||||
str
|
||||
end
|
||||
|
||||
def build(app)
|
||||
if block
|
||||
klass.new(app, *args, &block)
|
||||
else
|
||||
klass.new(app, *args)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(*args, &block)
|
||||
super(*args)
|
||||
block.call(self) if block_given?
|
||||
end
|
||||
|
||||
def insert(index, *args, &block)
|
||||
index = self.index(index) unless index.is_a?(Integer)
|
||||
middleware = Middleware.new(*args, &block)
|
||||
super(index, middleware)
|
||||
end
|
||||
|
||||
alias_method :insert_before, :insert
|
||||
|
||||
def insert_after(index, *args, &block)
|
||||
index = self.index(index) unless index.is_a?(Integer)
|
||||
insert(index + 1, *args, &block)
|
||||
end
|
||||
|
||||
def swap(target, *args, &block)
|
||||
insert_before(target, *args, &block)
|
||||
delete(target)
|
||||
end
|
||||
|
||||
def use(*args, &block)
|
||||
middleware = Middleware.new(*args, &block)
|
||||
push(middleware)
|
||||
end
|
||||
|
||||
def active
|
||||
find_all { |middleware| middleware.active? }
|
||||
end
|
||||
|
||||
def build(app)
|
||||
active.reverse.inject(app) { |a, e| e.build(a) }
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue