Rails je framework kompatibilní s Rackem, který se zaměřuje na rychlý vývoj aplikací. Bohužel přístup "vše z krabice" a slepé chování podle Rails často způsobují, že kód aplikace ztrácí na kvalitě, a to jak z hlediska příjmu (čitelnosti), tak i fungování.
Oblíbené problémy Rails a Rails-way
- směrování,
- before-actions,
- velké akce v regulátorech,
- soukromé metody v řadičích,
- mixiny použité jednou,
- logika v zobrazeních,
- Zpětná volání ActiveRecord,
- Asociace,
- "tlusté modely".
Další problémy
- Ověřování aktivních záznamů,
- implicitní před explicitní,
- zneužití funkce DRY,
- delegace do sdružení,
- servisní volání v modelech.
Alternativy k systému Rails
Pokud jde o Rails v Ruby světě, máme několik alternativ. Mezi další frameworky založené na Racku patří: - Sinatra, – Roda, – Hanami.
V čem jsou jedinečné?
Sinatra i Roda nabízejí nás syntaxe blokového směrování, ale směrování v Sinatře je seznam a v Rodě strom. V obou frameworcích se musíme s implementací modelové vrstvy vypořádat sami. V případě Rody je dobré použít drahokam Sequel.
Roda se inspiruje Sinatrou. Sama o sobě je velmi lehká, ale má spoustu zásuvných modulů.
Hanami je nejblíže Rails pokud jde o oblasti, na které se vztahuje rámec. Nejdůležitější rozdíly z hlediska použití jsou:
- ovladače v Rails vs. akce v Hanami,
- specializované třídy / objekty zpracovávající konkrétní požadavek HTTP, nikoli jeden kontrolér pro akce související s konkrétním prostředkem (modelem),
- vrstva modelu založená na úložištích a entitách, která odděluje perzistenci od zbytku aplikace, nikoliv vzor aktivního záznamu.
Hanami verze 1 silně omezuje použití ROM, na které je založena (verze 3, a to už je 5), takže se nevyplatí používat tam navrženou modelovou vrstvu. Protože se však jedná o velmi otevřený framework, je poměrně snadné implementovat tam model vlastní.
Doplňky pro systém Rails
Vyplatí se používat řešení, která nejsou závislá na Rails a blíží se "čistým" Ruby. V prezentaci jsou zmíněny tyto nástroje:
- Sequel (ORM, alternativa k ActiveRecord),
- ROM (mapovač objektů),
- knihovny dry-rb: dry-validations, dry-system a dry-monads.
Pokračování je snadné umístit do projekt, je založen na zásuvných modulech a také implementuje vzor aktivního záznamu. Má lepší podporu nízkoúrovňových dotazů než Rails' ActiveRecord.
ROM používá Sequel, ale jeho koncepce spočívá v převodu mezi záznamy v databázi (databázích) a záznamem v databázi. Ruby objekty. Jeho cílem je rychlost a transformace dat. Jasně odděluje vrstvu perzistence v aplikaci.
Knihovny Dry-rb jsou velmi užitečné nástroje:
- Dry-validace se v projektech API používá velmi snadno a umožňuje skvělou kontrolu správnosti příchozích dat,
- dry-system vyžaduje trochu cviku a trpělivosti, aby jej vývojáři pochopili, ale umožňuje velmi flexibilní správu závislostí v aplikaci a izolované načítání komponent projektu; pokud chceme tuto knihovnu použít v Rails, můžeme použít suché kolejnice,
- suché monády jsou teoreticky obtížným konceptem, ale v praxi je jejich pochopení jednodušší, výsledné monády mohou být skvělým způsobem, jak zvýšit čitelnost. kód zvažováním konkrétních případů namísto větvení if.
Závěry
Nejlepší je použít Rails abyste nemuseli používat Rails jeden den.
Zdroje
Články
Rámce
Drahokamy
Specifikace
Přečtěte si více:
Co je Ruby on Jets a jak pomocí něj vytvořit aplikaci?
Vuelendar. Nový projekt Codestu založený na Vue.js
Týdenní přehled nejlepších technických článků společnosti Codest. Tvorba softwaru pro 50 milionů souběžných soketů (10)