merb. rails in anders
DESCRIPTION
A german, rather superficial presentation on merb, Ezras Rails-Killer (hah!), for Hamburgs Rails Usergroup.TRANSCRIPT
![Page 1: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/1.jpg)
merb. rails in anders.
Jan Krutisch, mindmatters GmbH & Co. KGRails-Usergroup Hamburg, 12.03.2008
![Page 2: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/2.jpg)
self.inspect‣ Dipl.-Ing. Jan Krutisch‣ Rails seit Frühjahr 2005 (undercover)‣ Qype ab Nov. 2006‣ mindmatters seit Apr. 2007‣ Entwicklungsleiter‣ Rails-Beauftragter
![Page 3: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/3.jpg)
mindmatters.inspect‣ Seit 2001‣ Aktuell 10 Entwickler‣ Java‣ Rails seit Anfang 2007‣ Viele verschiedene Projekte
![Page 4: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/4.jpg)
usergroup.organize!
![Page 5: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/5.jpg)
Warum gibt es merb?
![Page 6: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/6.jpg)
Große File-Uploads
![Page 7: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/7.jpg)
rails.threadsafe?=> false
![Page 8: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/8.jpg)
Prozessverstopfung
![Page 9: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/9.jpg)
M(ongrel + )ERB
![Page 10: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/10.jpg)
Ezra Zygmuntowicz,Engine Yard
![Page 11: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/11.jpg)
merb.threadsafe?=> true
![Page 12: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/12.jpg)
>>
![Page 13: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/13.jpg)
merb 0.9.1 (1 woche alt)
![Page 14: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/14.jpg)
Viele, viele Entwickler
![Page 15: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/15.jpg)
merb basics‣ Rails-Inspiriert (ach)‣ Schnellerer (2-5 mal so schnell wie Rails)‣ Schlankerer (ca. 50% Speicherverbrauch)‣ Weniger Automagie‣ Extrem Modular‣ Flexibler als Rails (andere ORMs etc.)‣ Rack!
![Page 16: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/16.jpg)
Extrem modular
![Page 17: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/17.jpg)
Auf Basis von rubygems
![Page 18: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/18.jpg)
merb-core
![Page 19: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/19.jpg)
merb-more‣ merb-action-args‣ merb-assets‣ merb-builder‣ merb-gen‣ merb-haml‣ merb-mailer‣ merb-parts‣ merb-test
![Page 20: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/20.jpg)
merb-plugins‣ merb_activerecord‣ merb_datamapper‣ merb_helpers‣ merb_param_protection‣ merb_sequel‣ merb_stories‣ merb_test_unit
![Page 21: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/21.jpg)
Flexibilität‣ ORM-Agnostisch‣ ActiveRecord‣ DataMapper‣ Sequel
‣ Test-Framework-Agnostisch‣ Test::Unit‣ RSpec‣ test/spec
![Page 22: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/22.jpg)
Rack you say?
"Rack provides an minimal interface between webservers supporting Ruby and Ruby frameworks."
![Page 23: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/23.jpg)
Mongrel
Rack
WEBrick
FastCGI
SCGI
CGI
LiteSpeed
Ebb
Fuzed (YAWS)
ThinCamping
Ebb
Coset
Halcyon
Maveric
Merb
Ramaze
Sinatra
Vintage
Coset - ??? Halcyon - JSON-Server Maveric - ???Ramaze - Lightweight - Flexible (merb?) Sinatra - Classy Webdevelopment dressed as a DSLVintage - merb-Uridee, super lightweight f. uploadsThin - Schneller Mongrel-Ersatz Fuzed - Frontend f. Yaws (Extrem performanter Erlang-Webserver)
![Page 24: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/24.jpg)
merb.cool_features
‣ provides / to_<mime_type>‣ Parts‣ Exception-Handling‣ Action-Argumente
![Page 25: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/25.jpg)
providesclass NewWay < Merb::Controller provides :js, :xml
def index @items = Item.find(:all) render @items end
def show does_not_provide :html
@item = Item.find(:first) render @item end
#...end
![Page 26: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/26.jpg)
providesclass NewWay < Merb::Controller provides :js, :xml
def index @items = Item.find(:all) render @items end
def show does_not_provide :html
@item = Item.find(:first) render @item end
#...end
1. show.js.erb2. @item.to_js
![Page 27: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/27.jpg)
Parts
‣ Components are back!‣ Kaum Performance-Impact‣ Funktioniert wie ein eigener Controller
![Page 28: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/28.jpg)
Partsclass FooPart < Merb::PartController def index render end end
-------------8<----------------------8<--------------
<%= part FooPart => :index %>
![Page 29: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/29.jpg)
Exceptionsclass MyController < Application def my_action dings = Book.find_by_isbn(isbn) if dings.nil? raise NotFound end endend
-------------8<----------------------8<--------------
class Exceptions < Application # handle NotFound exceptions (404) def not_found render :format => :html endend
![Page 30: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/30.jpg)
Action-Argumenteclass FooController < Application def bar(one, two = "dos", three = "tres") "#{one} #{two} #{three}" endend
/foo/bar?one=uno&three=three
=>
"uno dos three"
![Page 31: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/31.jpg)
Kulturelles‣ Sehr offener Entwicklungsprozess (git!)‣ community.arrogant? => false‣ Sehr strikte Code-Style-Regeln‣ Durch weniger Magie einfacher zu
verstehen
![Page 32: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/32.jpg)
Warum merb?‣ Rails schwer/kaum threadsafe zu machen‣ Rails wird immer langsamer und fetter‣ Einfacher, was neues zu schreiben‣ Rails hat bereits viel Legacy-Code‣ Chance, Dinge besser zu machen‣ Viel Betriebs-KnowHow
![Page 33: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/33.jpg)
Rails vs. Merb‣ Rails hat noch mehr "Stützräder"‣ Merb-API ist noch nicht 100%ig stabil!‣ Merb ist performanter, leichter‣ Merb ist flexibler, "verbiegbarer"
‣ Fazit: Nicht für jeden!
![Page 34: Merb. Rails in anders](https://reader033.vdocuments.us/reader033/viewer/2022051411/547e96a85806b5f45e8b46de/html5/thumbnails/34.jpg)
Verlinkungsdingsbums
‣ http://merbivore.org‣ http://www.merbivore.org/documentation.html
‣ http://brainspl.at/‣ http://yehudakatz.com/‣ http://www.merbcast.com/tutorials.html