Parent

Rack::Adapter::Rails

Constants

FILE_METHODS

Public Class Methods

new(options={}) click to toggle source
    # File lib/rack/adapter/rails.rb, line 18
18:       def initialize(options={})
19:         @root   = options[:root]         || Dir.pwd
20:         @env    = options[:environment]  || 'development'
21:         @prefix = options[:prefix]
22:         
23:         load_application
24:         
25:         @rails_app = if rack_based?
26:           ActionController::Dispatcher.new
27:         else
28:           CgiApp.new
29:         end
30:         
31:         @file_app = Rack::File.new(::File.join(RAILS_ROOT, "public"))
32:       end

Public Instance Methods

call(env) click to toggle source
    # File lib/rack/adapter/rails.rb, line 59
59:       def call(env)
60:         path        = env['PATH_INFO'].chomp('/')
61:         method      = env['REQUEST_METHOD']
62:         cached_path = (path.empty? ? 'index' : path) + ActionController::Base.page_cache_extension
63:         
64:         if FILE_METHODS.include?(method)
65:           if file_exist?(path)              # Serve the file if it's there
66:             return @file_app.call(env)
67:           elsif file_exist?(cached_path)    # Serve the page cache if it's there
68:             env['PATH_INFO'] = cached_path
69:             return @file_app.call(env)
70:           end
71:         end
72:         
73:         # No static file, let Rails handle it
74:         @rails_app.call(env)
75:       end
file_exist?(path) click to toggle source
    # File lib/rack/adapter/rails.rb, line 54
54:       def file_exist?(path)
55:         full_path = ::File.join(@file_app.root, Utils.unescape(path))
56:         ::File.file?(full_path) && ::File.readable_real?(full_path)
57:       end
load_application() click to toggle source
    # File lib/rack/adapter/rails.rb, line 39
39:       def load_application
40:         ENV['RAILS_ENV'] = @env
41: 
42:         require "#{@root}/config/environment"
43:         require 'dispatcher'
44:         
45:         if @prefix
46:           if ActionController::Base.respond_to?(:relative_url_root=)
47:             ActionController::Base.relative_url_root = @prefix # Rails 2.1.1
48:           else
49:             ActionController::AbstractRequest.relative_url_root = @prefix
50:           end
51:         end
52:       end
rack_based?() click to toggle source
    # File lib/rack/adapter/rails.rb, line 34
34:       def rack_based?
35:         rails_version = ::Rails::VERSION
36:         rails_version::MAJOR >= 2 && rails_version::MINOR >= 2 && rails_version::TINY >= 3
37:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.