Upload
janmindmatters
View
2.916
Download
0
Embed Size (px)
DESCRIPTION
A german, rather superficial presentation on merb, Ezras Rails-Killer (hah!), for Hamburgs Rails Usergroup.
Citation preview
merb. rails in anders.
Jan Krutisch, mindmatters GmbH & Co. KGRails-Usergroup Hamburg, 12.03.2008
self.inspect‣ Dipl.-Ing. Jan Krutisch‣ Rails seit Frühjahr 2005 (undercover)‣ Qype ab Nov. 2006‣ mindmatters seit Apr. 2007‣ Entwicklungsleiter‣ Rails-Beauftragter
mindmatters.inspect‣ Seit 2001‣ Aktuell 10 Entwickler‣ Java‣ Rails seit Anfang 2007‣ Viele verschiedene Projekte
usergroup.organize!
Warum gibt es merb?
Große File-Uploads
rails.threadsafe?=> false
Prozessverstopfung
M(ongrel + )ERB
Ezra Zygmuntowicz,Engine Yard
merb.threadsafe?=> true
>>
merb 0.9.1 (1 woche alt)
Viele, viele Entwickler
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!
Extrem modular
Auf Basis von rubygems
merb-core
merb-more‣ merb-action-args‣ merb-assets‣ merb-builder‣ merb-gen‣ merb-haml‣ merb-mailer‣ merb-parts‣ merb-test
merb-plugins‣ merb_activerecord‣ merb_datamapper‣ merb_helpers‣ merb_param_protection‣ merb_sequel‣ merb_stories‣ merb_test_unit
Flexibilität‣ ORM-Agnostisch‣ ActiveRecord‣ DataMapper‣ Sequel
‣ Test-Framework-Agnostisch‣ Test::Unit‣ RSpec‣ test/spec
Rack you say?
"Rack provides an minimal interface between webservers supporting Ruby and Ruby frameworks."
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)
merb.cool_features
‣ provides / to_<mime_type>‣ Parts‣ Exception-Handling‣ Action-Argumente
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
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
Parts
‣ Components are back!‣ Kaum Performance-Impact‣ Funktioniert wie ein eigener Controller
Partsclass FooPart < Merb::PartController def index render end end
-------------8<----------------------8<--------------
<%= part FooPart => :index %>
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
Action-Argumenteclass FooController < Application def bar(one, two = "dos", three = "tres") "#{one} #{two} #{three}" endend
/foo/bar?one=uno&three=three
=>
"uno dos three"
Kulturelles‣ Sehr offener Entwicklungsprozess (git!)‣ community.arrogant? => false‣ Sehr strikte Code-Style-Regeln‣ Durch weniger Magie einfacher zu
verstehen
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
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!
Verlinkungsdingsbums
‣ http://merbivore.org‣ http://www.merbivore.org/documentation.html
‣ http://brainspl.at/‣ http://yehudakatz.com/‣ http://www.merbcast.com/tutorials.html