merb. rails in anders

34
merb. rails in anders. Jan Krutisch, mindmatters GmbH & Co. KG Rails-Usergroup Hamburg, 12.03.2008

Upload: janmindmatters

Post on 02-Dec-2014

2.916 views

Category:

Technology


0 download

DESCRIPTION

A german, rather superficial presentation on merb, Ezras Rails-Killer (hah!), for Hamburgs Rails Usergroup.

TRANSCRIPT

Page 1: Merb. Rails in anders

merb. rails in anders.

Jan Krutisch, mindmatters GmbH & Co. KGRails-Usergroup Hamburg, 12.03.2008

Page 2: Merb. Rails in anders

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

mindmatters.inspect‣ Seit 2001‣ Aktuell 10 Entwickler‣ Java‣ Rails seit Anfang 2007‣ Viele verschiedene Projekte

Page 4: Merb. Rails in anders

usergroup.organize!

Page 5: Merb. Rails in anders

Warum gibt es merb?

Page 6: Merb. Rails in anders

Große File-Uploads

Page 7: Merb. Rails in anders

rails.threadsafe?=> false

Page 8: Merb. Rails in anders

Prozessverstopfung

Page 9: Merb. Rails in anders

M(ongrel + )ERB

Page 10: Merb. Rails in anders

Ezra Zygmuntowicz,Engine Yard

Page 11: Merb. Rails in anders

merb.threadsafe?=> true

Page 12: Merb. Rails in anders

>>

Page 13: Merb. Rails in anders

merb 0.9.1 (1 woche alt)

Page 14: Merb. Rails in anders

Viele, viele Entwickler

Page 15: Merb. Rails in anders

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

Extrem modular

Page 17: Merb. Rails in anders

Auf Basis von rubygems

Page 18: Merb. Rails in anders

merb-core

Page 19: Merb. Rails in anders

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

merb-plugins‣ merb_activerecord‣ merb_datamapper‣ merb_helpers‣ merb_param_protection‣ merb_sequel‣ merb_stories‣ merb_test_unit

Page 21: Merb. Rails in anders

Flexibilität‣ ORM-Agnostisch‣ ActiveRecord‣ DataMapper‣ Sequel

‣ Test-Framework-Agnostisch‣ Test::Unit‣ RSpec‣ test/spec

Page 22: Merb. Rails in anders

Rack you say?

"Rack provides an minimal interface between webservers supporting Ruby and Ruby frameworks."

Page 23: Merb. Rails in anders

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

merb.cool_features

‣ provides / to_<mime_type>‣ Parts‣ Exception-Handling‣ Action-Argumente

Page 25: Merb. Rails in anders

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

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

Parts

‣ Components are back!‣ Kaum Performance-Impact‣ Funktioniert wie ein eigener Controller

Page 28: Merb. Rails in anders

Partsclass FooPart < Merb::PartController def index render end end

-------------8<----------------------8<--------------

<%= part FooPart => :index %>

Page 29: Merb. Rails in anders

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

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

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

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

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

Verlinkungsdingsbums

‣ http://merbivore.org‣ http://www.merbivore.org/documentation.html

‣ http://brainspl.at/‣ http://yehudakatz.com/‣ http://www.merbcast.com/tutorials.html