Merb. Rails in anders.

Post on 02-Dec-2014

2.916 views 0 download

description

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

Transcript of Merb. Rails in anders.

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