Sha256: 8631223017964f2e6f1aabca9dfb44b469d009a7cd492aad463bfc8c4b04e1bc

Contents?: true

Size: 1.1 KB

Versions: 17

Compression:

Stored size: 1.1 KB

Contents

module Frank
  module Middleware
    class Statik
 
      def initialize(app, options={})
        @app = app
        frank_root = File.expand_path(File.dirname(File.dirname(__FILE__))) + '/templates'
        root = options[:root] || Dir.pwd
        @frank_server = Rack::File.new(frank_root)
        @static_server = Rack::File.new(root)
      end
 
      # handles serving from __frank__
      # looks for static access, if not found,
      # passes request to frank
      def call(env)
        path = env['PATH_INFO'].dup
 
        if path.include? '__frank__'
          env['PATH_INFO'].gsub!('/__frank__', '')
          result = @frank_server.call(env)
        else
          env['PATH_INFO'] << '/' unless path.match(/(\.\w+|\/)$/)
          env['PATH_INFO'] << 'index.html' if path[-1..-1] == '/'
          result = @static_server.call(env)
        end
      
        # return if static assets found
        # else reset the path and pass to frank
        if result[0] == 200
          result
        else
          env['PATH_INFO'] = path
          @app.call(env)
        end
      
      end
      
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
frank-1.0.9 lib/frank/middleware/statik.rb
frank-1.0.8 lib/frank/middleware/statik.rb
frank-1.0.7 lib/frank/middleware/statik.rb
frank-1.0.6 lib/frank/middleware/statik.rb
frank-1.0.5 lib/frank/middleware/statik.rb
frank-1.0.4 lib/frank/middleware/statik.rb
frank-1.0.3 lib/frank/middleware/statik.rb
frank-1.0.2 lib/frank/middleware/statik.rb
frank-1.0.1 lib/frank/middleware/statik.rb
frank-1.0.0 lib/frank/middleware/statik.rb
frank-0.4.1 lib/frank/middleware/statik.rb
frank-0.4.0 lib/frank/middleware/statik.rb
frank-0.3.2 lib/frank/middleware/statik.rb
frank-0.3.1 lib/frank/middleware/statik.rb
frank-0.3.0 lib/frank/middleware/statik.rb
frank-0.3.0.beta2 lib/frank/middleware/statik.rb
frank-0.3.0.beta lib/frank/middleware/statik.rb