Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Slim Ruby on Rails: Controllers & Middlewares

Slim Ruby on Rails: Controllers & Middlewares

Krzysztof Wawer

June 21, 2017
Tweet

More Decks by Krzysztof Wawer

Other Decks in Programming

Transcript

  1. Slim Ruby on Rails:
    Controllers & Middlewares
    Krzysztof Wawer

    View Slide

  2. Request
    https://medium.com/@christemple/what-is-rack-in-ruby-7e0615f1d9b6

    View Slide

  3. Request
    Rack App
    Middlewares
    log auth cache
    HTTP Request
    HTTP Response

    View Slide

  4. Middleware

    View Slide

  5. Rack Middleware
    http://railscasts.com/episodes/151-rack-middleware

    View Slide

  6. Ruby on Rails
    Middleware stack
    $ rails new app
    $ rails new app --api
    $ rake middleware
    http://guides.rubyonrails.org/rails_on_rack.html#configuring-middleware-stack

    View Slide

  7. Ruby on Rails
    Middleware stack
    use Rack::MethodOverride
    use Sprockets::Rails::QuietAssets
    use WebConsole::Middleware
    use ActionDispatch::Cookies
    use ActionDispatch::Session::CookieStore
    use ActionDispatch::Flash
    http://guides.rubyonrails.org/rails_on_rack.html#configuring-middleware-stack

    View Slide

  8. RoR Middlewares
    problem
    https://github.com/rails/rails/blob/master/railties/lib/rails/application/default_middleware_stack.rb

    View Slide

  9. http://paulserraino.com/rails/2016/02/29/rails-mountable-engines.html
    Rails Engines

    View Slide

  10. Ruby on Rails Engine
    http://tech.taskrabbit.com/blog/2014/02/11/rails-4-engines/

    View Slide

  11. Controller

    View Slide

  12. View Slide

  13. View Slide

  14. ActionController::Base
    http://api.rubyonrails.org/classes/ActionController/Base.html

    View Slide

  15. ActionController::API
    http://api.rubyonrails.org/classes/ActionController/API.html

    View Slide

  16. ActionController::Metal
    http://api.rubyonrails.org/classes/ActionController/Metal.html

    View Slide

  17. ActionController::API
    http://api.rubyonrails.org/classes/ActionController/API.html

    View Slide

  18. Why ?

    View Slide

  19. • Strong Parameters
    • Params Wrapper

    View Slide

  20. • Strong Parameters
    • Params Wrapper
    Mapping

    View Slide

  21. Mapping - missing part
    Nested Attributes - revealing
    structure

    View Slide