Merb

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Merb
Vývojář [Engine Yard, vývoj vede Yehuda Katz]
Aktuální verze 1.0.4 (9. prosinec 2008)
Operační systém Nezávislý na platformě
Typ softwaru Framework na vývoj webových aplikací
Licence MIT
Web merbivore.com


Merb je webový MVC framework silně inspirovaný Ruby on Rails a v poslední době čím dál tím více také frameworkem Django. Jeho vývoj započal zakladatel Engine Yardu Ezra Zygmuntowicz. Původně vznikl jako jednoduchý patch do Rails, který měl umožnit rychlé uploadování souborů, které je v Rails tragicky pomalé. Merb byl tehdy pouhý mongrelový handler, postupně se z něj vyvinul plnohodnotný webový framework.

Za Merbem stojí Engine Yard, poměrně velká firma, která má v Ruby komunitě skvělé jméno. Dalšími z jejich projektů jsou například implementace Ruby Rubinius nebo DataMapper ORM.

Filosofie[editovat | editovat zdroj]

Ačkoliv je Merb na první pohled velmi podobný Rails, oba frameworky mají dost odlišnou filosofii. Kdežto Rails jsou navrženy tak, aby podporovaly software vyhovující jejich tvůrcům, Merb se snaží být co nejvíce konfigurovatelný. Pokud v Merbu chcete změnit testovací framework, stačí změnit jedinou řádku v konfiguraci. Pokud to samé chcete v Rails, máte problém. O nepodpoře jiných šablonovacích systémů railsovými generátory nemluvě. Merb je tedy agnostický k šablonovacímu jazyku, testovacímu frameworku, javascriptovému frameworku i ORM. Volba nástrojů je u Merbu na uživatelích frameworku, nikoliv na jeho tvůrcích.

Merb se také snaží dodržovat styl jazyka Ruby a nevymýšlet si zbytečně vlastní metajazyk. Merb nedělá z Ruby něco jiného než je, jako se o to snaží Rails. To kritizovalo velké množství vývojářů, mezi nimi i designer a autor jazyka Ruby Yukihiro Matsumoto zvaný „Matz“. Ten si Merb oblíbil a používá jej pro vývoj v jeho firmě.

Proč používat Merb[editovat | editovat zdroj]

  • Vývojáři dbají i na rychlost a hardwarovou nenáročnost Merbu. Pomalost je brána jako bug.
  • Je jednoduše konfigurovatelný.
  • Výjimky routuje na kontrolér Exception.
  • Slices umožňují psát pluginy obsahující hotové části aplikace.
  • Part kontroléry řeší logiku jednotlivých podčástí stránky přímo nesouvisejících s hlavním obsahem.
  • Obsahuje podporu testování
  • Je kompatibilní s Passengerem, vaše aplikace bez problémů poběží na serveru Apache.

Architektura[editovat | editovat zdroj]

Modely[editovat | editovat zdroj]

ORM[editovat | editovat zdroj]

DataMapper[editovat | editovat zdroj]

DataMapper je zdaleka nejpoužívanější merbové ORM. Mezi jeho největší výhody patří automigrace. Stačí v modelu nadefinovat jaké bude mít vlastnosti a pustit automigrační task (rake db:automigrate) a příslušně databázové schéma bude vytvořeno. Pokud změníte libovolnou vlastnost v modelu, stačí pustit rake db:autoupgrade a struktura databáze bude změněna bez ztráty dat.

Za DataMapperem, stejně jako za Merbem stojí Engine Yard a hodně vývojářů Merbu se podílí i na DataMapperu a naopak. Mají proto podobnou filosofii. Zatímco Merb je agnostický k ORM, JavaScriptovému frameworku a šablonovacímu jazyku, DataMapper je agnostický k úložišti. Tím může být nejenom relační databáze, ale třeba YAML, CSV nebo CouchDB.

Stejně jako u Merbu, i u DataMapperu je kladen důraz na rychlost a čistou Ruby syntaxi, kterou se vyjadřují i věci, na které je v ActiveRecordu použít SQL podmínku.

Sequel[editovat | editovat zdroj]

Sequel je minimalistické ORM zaměřené především na snadné a mocné dotazování.

ActiveRecord[editovat | editovat zdroj]

ActiveRecord je ORM z Ruby on Rails. Je stabilní a odladěné, na druhou stranu ale pomalé a se syntaxí nutící psát SQL podmínky. Používalo se spíše dříve, když DataMapper nebyl ještě dostatečně odladěný.

Kontroléry[editovat | editovat zdroj]

Part kontroléry[editovat | editovat zdroj]

Kromě běžných kontrolerů podporuje Merb přes plugin merb-parts také tzv. part controllers, tedy kontrolery určené pro práci tag cloud

Zachytávání výjimek[editovat | editovat zdroj]

V Merbu je definován kontroler Exceptions, který je volán automaticky vždy, když je vyvolána výjimka NotFound, NotAcceptable nebo podobné. To umožňuje jednoduchou tvorbu vlastních chybových hlášení při zachování vzoru MVC.

Pluginy[editovat | editovat zdroj]

Všechny merbové pluginy jsou klasické gemy, které je možno nainstalovat do složky gems v rootu aplikace. Výhoda této tzv. zabundlované aplikace je ta, že ať ji nasadíte kdekoliv, stačí ji pouze Ruby a RubyGems, vše ostatní načte ze své lokální složky gems.

V Merbu není problém napsat si také vlastní generátory. Ty mohou generovat jak celou merbovou aplikaci, tak její konkrétní části jako jsou modely nebo kontrolery.

Zásadní rozdíl je také v samotném kódu frameworku. Kód Merbu je velmi přehledný, dobře dokumentovaný a je v něm použito minimum „magie“ jako jsou například method_missing, define_method, eval a další, kterými se to v Rails jen hemží. Kód Merbu je tím mnohem přístupnější pro vývojáře pluginů i pro potenciální kontributory.

Slices[editovat | editovat zdroj]

Zajímavou částí Merbu jsou tzv. slices, části aplikace, které lze přimountovat na určitou URL stejně jako to umí například framework Django. Příkladem slice je merb-auth, což je velmi dobře napsaný autentikační plugin, podporující mimo jiné i OpenID.

Deployment[editovat | editovat zdroj]

Patrně nejjednodušší řešení pro deployment je využití Apache s Passengerem. Vzhledem k tomu, že každá merbová aplikace je zároveň aplikací rackovou, stačí jednoduše přidat config.ru do rootu aplikace a nakonfigurovat Passenger a aplikace by měla fungovat. Na nahrání na server je určen nástroj Capistrano.

Chystané novinky[editovat | editovat zdroj]

Souběžně s aktuální řadou 1.0 se pracuje na nadcházející 1.1. Její patrně největší novinkou bude messenger, který by měl nahradit současný mailer. Messenger bude generické rozhraní pro notifikace, bude podporovat nejenom maily, ale také jabber, AMQP, Facebook, Twitter, IRC, SMS, XML-RPC a dokonce i macovský software Growl. V některé z dalších verzí by se do Merbu pravděpodobně měla dostat obdoba autoadminu z Djanga.

Komunita[editovat | editovat zdroj]

Merb je mladý a zatím nepříliš známý framework, takže česká komunita se teprve formuje. V nejbližší době bude spuštěna česká obdoba oficiálních stránek a chystá se také český překlad online knihy o Merbu.

Dokumentace[editovat | editovat zdroj]

Dokumentace je v současné době hlavním problémem Merbu. Merb team si je problému vědom a intenzivně pracuje na zlepšení. Momentálně je rozepsáno 6 knih o Merbu: dvě online a čtyři klasické. To svědčí o dosti živém zájmu o tuto platformu.


Externí odkazy[editovat | editovat zdroj]