Hobbit

794f638b6f7f5132d5a13230e61c9db2?s=47 Krzysztof Wawer
July 23, 2014
110

 Hobbit

794f638b6f7f5132d5a13230e61c9db2?s=128

Krzysztof Wawer

July 23, 2014
Tweet

Transcript

  1. Budowanie aplikacji webowej w Ruby Hobbit

  2. O mnie Krzysztof Wawer! krzysztof.wawer@gmail.com! Github: wafcio! ! Neubloc Polska

  3. Ruby on Rails Web Serwer Ruby on Rails Nasza aplikacja

  4. Ruby on Rails Web Serwer Ruby on Rails Nasza aplikacja

    Rack
  5. Ruby on Rails - zależności rails actionmailer (4.1.4 - 62

    112 B) mail actionpack (4.1.4 - 651 917 B) AbstractController, ActionController, ActionDispatch rack rack-test actionview (4.1.4 - 624 372 B) builder erubis activemodel (4.1.4 - 159 322 B) builder activerecord (4.1.4 - 1 143 044 B) arel ! activesupport (4.1.4 - 1 475 624 B) cache, core_ext, json, multibyte, notyfikacje, konwersja liczb i18n jon minitest thread_safe tzinfo bundler railties (4.1.4 - 368 897 B) rake thor sprockets-rails RAZEM 4 485 298 B ~ 4,28 MB
  6. Ruby on Rails Konwencja nad Konfiguracją! ! Twórcy => Odtwórców

  7. Ruby on Rails ??? Czy na pewno rozumiemy większość kodu

    RoR ?
  8. Ruby on Rails ??? Czy potrafimy optymalnie wykorzystać RoR ?

  9. Ruby on Rails ??? A może coś nam przeszkadza w

    RoR ?
  10. Ruby off Rails Web Serwer Ruby on Rails Nasza aplikacja

    Rack
  11. Ruby off Rails Mikro Biblioteki! Piotr Solnica: https://www.youtube.com/ watch?v=urUEB8Kz6jY! Wykorzystanie

    tylko potrzebnych gemów! Zwiększenie wydajności
  12. Rack Rack Web Serwer Nasza aplikacja https://github.com/rack/rack

  13. Aplikacja Rack require 'rack' ! class HelloWorld def call(env) [200,

    {'Content-Type' => 'text/plain'}, 'Hello World!'] end end ! run HelloWorld.new
  14. Rack Rack Web Serwer Nasza aplikacja https://github.com/rack/rack Lekki framework

  15. Niektóre frameworki Brooklyn, Cuba, Hobbit, Lotus, Nancy, NYNY, Mustermann, Ramaze,

    Rambutan, Scorched, Sinatra! https://github.com/luislavena/bench-micro! ! Cuba, Hobbit, Jellyfish, Sinatra, Substation, Subway! http://microrb.com/#framework!
  16. Hobbit Patricio Mac Adden patriciomacadden@gmail.com Github: patriciomacadden ! Pierwszy commit:

    11 IV 2013
  17. Hobbit pierwsza nazwa: bonsai, ale … ! musi być szybki

    bardzo prosty, tylko routing rozszerzalny zero konfiguracji ! http://www.sitepoint.com/ruby-microframeworks-round/
  18. hobbit - źródło https://github.com/patriciomacadden/hobbit v0.6.0, 12 VI 2014 - 9

    239 B ~ 9,02 KB hobbit.rb - 4 linii hobbit/base.rb - 93 linii hobbit/request.rb - 10 linii hobbit/response.rb - 40 linii Razem: 147 linii
  19. Hello World require 'hobbit' ! class HelloWorld < Hobbit::Base get

    '/' do 'Hello World!' end end ! run HelloWorld.new
  20. hobbit-contrib - źródło https://github.com/patriciomacadden/hobbit-contrib v0.7.0, 10 VII 2014 - 5

    280 B ~ 5,16 KB hobbit/contrib.rb - 13 linii hobbit/environment.rb - 15 linii hobbit/error_handling.rb - 27 linii hobbit/filter.rb - 73 linii hobbit/mote.rb - 42 linii hobbit/render.rb - 55 linii hobbit/session.rb - 7 linii Razem: 232 linii
  21. hobbit-contrib - źródło https://github.com/patriciomacadden/hobbit-contrib environment.rb - development?, production? error_handling.rb -

    chwyta wyjątki filter.rb - after, before mote.rb - renderuje widoki przy użyciu Mote render.rb - renderuje widoki przy użyciu Tilt session.rb - łatwy dostęp do zmiennych zapisanych w sesji
  22. Format HTML require 'hobbit' require 'hobbit/render' require 'tilt/haml' ! class

    HelloWorld < Hobbit::Base def template_engine 'haml' end ! get '/' do render 'index', {}, layout: false end end ! run HelloWorld.new
  23. Co zrobić gdy czegoś brakuje ? gemy dla Racka gemy

    dla Sinatry activesupport ???
  24. Hobbit - ataki brak obrony przed atakami zalecane wykorzystanie: https://github.com/rkh/rack-protection

    Cross Site Request Forgery Cross Site Scripting Clickjacking Directory Traversal Session Hijacking IP Spoofing
  25. Hobbit Application Template https://github.com/patriciomacadden/hat i18n tilt sprockets better_errors rake rack-test,

    minitest
  26. Prekompilacja assetów require 'rake/sprocketstask' require 'uglifier' ! Rake::SprocketsTask.new do |t|

    environment = Sprockets::Environment.new environment.append_path(…) environment.js_compressor = :uglify environment.css_compressor = :scss ! t.environment = environment t.manifest = Sprockets::Manifest.new(environment, "public/assets/manifest.json") ! t.output = 'public/assets' t.assets = %w(application.js application.css) end rake assets # Compile assets ! rake clean_assets # Clean old assets ! rake clobber_assets # Remove all assembler
  27. Przykład Na podstawie: https://github.com/ryant523/blog haml sass rake sequel pony

  28. Dziękuje Pytania ???