writing my own web framework

Upload: best-tech-videos

Post on 30-May-2018

224 views

Category:

Documents


1 download

TRANSCRIPT

  • 8/14/2019 Writing My Own Web Framework

    1/71

    All I Really Need to Know*

    I Learned by Writing MyOwn Web Framework7 November 2008

    RubyconfBen Scofield

    * about Ruby and the web

  • 8/14/2019 Writing My Own Web Framework

    2/71

  • 8/14/2019 Writing My Own Web Framework

    3/71

  • 8/14/2019 Writing My Own Web Framework

    4/71

    DSLs

    Intimidateand

    Frighten

    DSL

    flickr: cwsteeds

    http://www.flickr.com/photos/cwsteeds/58514985/http://www.flickr.com/photos/cwsteeds/58514985/http://www.flickr.com/photos/cwsteeds/58514985/http://www.flickr.com/photos/cwsteeds/58514985/
  • 8/14/2019 Writing My Own Web Framework

    5/71

  • 8/14/2019 Writing My Own Web Framework

    6/71

    Rails

  • 8/14/2019 Writing My Own Web Framework

    7/71

    your custom

    framework

    Rails

  • 8/14/2019 Writing My Own Web Framework

    8/71

    Starter Projects

  • 8/14/2019 Writing My Own Web Framework

    9/71

    Hello World

  • 8/14/2019 Writing My Own Web Framework

    10/71

  • 8/14/2019 Writing My Own Web Framework

    11/71

  • 8/14/2019 Writing My Own Web Framework

    12/71

    Applications

  • 8/14/2019 Writing My Own Web Framework

    13/71To-do lists

  • 8/14/2019 Writing My Own Web Framework

    14/71DIY Blog

  • 8/14/2019 Writing My Own Web Framework

    15/71

    Frameworks?

  • 8/14/2019 Writing My Own Web Framework

    16/71PHP Framework(based on Rails)

  • 8/14/2019 Writing My Own Web Framework

    17/71

    NOT FOR PRODUCTION!

  • 8/14/2019 Writing My Own Web Framework

    18/71

    well, maybe for production

  • 8/14/2019 Writing My Own Web Framework

    19/71

    but really:

    NOT FOR PRODUCTION!

  • 8/14/2019 Writing My Own Web Framework

    20/71

    Frameworks

  • 8/14/2019 Writing My Own Web Framework

    21/71

    ActionMailer

    ActionPack

    ActiveRecordActiveResource

    ActiveSupport

    Railties

    Ruby on Rails

  • 8/14/2019 Writing My Own Web Framework

    22/71

    request=> response

  • 8/14/2019 Writing My Own Web Framework

    23/71

    Sequel

    ActiveRecordDataMapper

    Og

    persistence layer

  • 8/14/2019 Writing My Own Web Framework

    24/71

    ERB

    Liquid

    Amrita2Erubis

    Markaby

    HAML

    templating layer

  • 8/14/2019 Writing My Own Web Framework

    25/71

    Ramaze

    Waves

    ActionPackMerb Core

    Sinatra

    Camping

    the middle layer

  • 8/14/2019 Writing My Own Web Framework

    26/71

    ActionMailer

    Merb HelpersActiveSupport

    Railties

    utilities

  • 8/14/2019 Writing My Own Web Framework

    27/71

    Tools

  • 8/14/2019 Writing My Own Web Framework

    28/71

    Rack

  • 8/14/2019 Writing My Own Web Framework

    29/71

    Mack

    Coset

    Camping

    Halcyon

    MavericSinatra

    Vintage

    RamazeWaves

    Merb

    CGI

    SCGILSWS

    Mongrel

    WEBrickFastCGI

    FuzedThin

    Ebb

  • 8/14/2019 Writing My Own Web Framework

    30/71

    mod_rack

  • 8/14/2019 Writing My Own Web Framework

    31/71

    Rack::Lint

    Rack::URLMap

    Rack::Deflater

    Rack::CommonLoggerRack::ShowExceptions

    Rack::Reloader

    Rack::StaticRack::Cache

    middlewares

  • 8/14/2019 Writing My Own Web Framework

    32/71

    Rack::RequestRack::Responseutility

  • 8/14/2019 Writing My Own Web Framework

    33/71

    Other Layers

  • 8/14/2019 Writing My Own Web Framework

    34/71

    Sequel

    ActiveRecordDataMapper

    Og

    persistence layer

  • 8/14/2019 Writing My Own Web Framework

    35/71

    ERB

    Liquid

    Amrita2Erubis

    Markaby

    HAML

    templating layer

  • 8/14/2019 Writing My Own Web Framework

    36/71

    Start at the End

  • 8/14/2019 Writing My Own Web Framework

    37/71

    Vision

  • 8/14/2019 Writing My Own Web Framework

    38/71REST and Resources

  • 8/14/2019 Writing My Own Web Framework

    39/71

    fully-formed web applicationsbuilt on resources

  • 8/14/2019 Writing My Own Web Framework

    40/71

    fully-formedweb applicationsbuilt on resources

  • 8/14/2019 Writing My Own Web Framework

    41/71

  • 8/14/2019 Writing My Own Web Framework

    42/71

    Birth of Athena

  • 8/14/2019 Writing My Own Web Framework

    43/71

    Dionysusask me after if you dont get the joke

  • 8/14/2019 Writing My Own Web Framework

    44/71

    Project

  • 8/14/2019 Writing My Own Web Framework

    45/71

    Extraction flickr: 95579828@N00

    http://www.flickr.com/photos/cwsteeds/58514985/http://www.flickr.com/photos/cwsteeds/58514985/
  • 8/14/2019 Writing My Own Web Framework

    46/71

  • 8/14/2019 Writing My Own Web Framework

    47/71

  • 8/14/2019 Writing My Own Web Framework

    48/71

    Results

  • 8/14/2019 Writing My Own Web Framework

    49/71

  • 8/14/2019 Writing My Own Web Framework

    50/71

  • 8/14/2019 Writing My Own Web Framework

    51/71

  • 8/14/2019 Writing My Own Web Framework

    52/71

  • 8/14/2019 Writing My Own Web Framework

    53/71

  • 8/14/2019 Writing My Own Web Framework

    54/71

  • 8/14/2019 Writing My Own Web Framework

    55/71

  • 8/14/2019 Writing My Own Web Framework

    56/71

  • 8/14/2019 Writing My Own Web Framework

    57/71

    Lessons About the Web

  • 8/14/2019 Writing My Own Web Framework

    58/71

    HTTP status codes http://thoughtpad.net/alan-dean/http-headers-status.gif

    http://www.flickr.com/photos/cwsteeds/58514985/http://www.flickr.com/photos/cwsteeds/58514985/
  • 8/14/2019 Writing My Own Web Framework

    59/71

    207Multi-Status

  • 8/14/2019 Writing My Own Web Framework

    60/71

    207Multi-Status

    sucks

  • 8/14/2019 Writing My Own Web Framework

    61/71

    rack::cachehttp://tomayko.com/src/rack-cache/

    http://tomayko.com/src/rack-cachehttp://tomayko.com/src/rack-cache
  • 8/14/2019 Writing My Own Web Framework

    62/71

    Lessons About Ruby

  • 8/14/2019 Writing My Own Web Framework

    63/71

    Form Parameters

  • 8/14/2019 Writing My Own Web Framework

    64/71

    Dynamic class creation

  • 8/14/2019 Writing My Own Web Framework

    65/71

    Tangled classes flickr: randomurl

    http://www.flickr.com/photos/cwsteeds/58514985/http://www.flickr.com/photos/cwsteeds/58514985/
  • 8/14/2019 Writing My Own Web Framework

    66/71

    Exception Propagation

  • 8/14/2019 Writing My Own Web Framework

    67/71

    this session has been a LIE

  • 8/14/2019 Writing My Own Web Framework

    68/71

    More to learn flickr: glynnis

    http://www.flickr.com/photos/cwsteeds/58514985/http://www.flickr.com/photos/cwsteeds/58514985/
  • 8/14/2019 Writing My Own Web Framework

    69/71

    always flickr: mointrigue

    http://www.flickr.com/photos/cwsteeds/58514985/http://www.flickr.com/photos/cwsteeds/58514985/
  • 8/14/2019 Writing My Own Web Framework

    70/71

    (under construction)

    http://github.com/bscofield/athenahttp://github.com/bscofield/athena
  • 8/14/2019 Writing My Own Web Framework

    71/71

    Thank you!Questions?

    Ben ScofieldDevelopment Director, Viget Labs

    |

    |

    http://www.viget.com/extendmailto:[email protected]:[email protected]:[email protected]:[email protected]://www.culann.com/http://www.culann.com/http://www.viget.com/extendhttp://www.viget.com/extend