Rails ir ar Rack saderīga sistēma, kas paredzēta ātrai lietojumprogrammu izstrādei. Diemžēl “viss no kastes” pieeja un akla Rails-way uzvedība bieži vien izraisa lietojumprogrammas koda kvalitātes zudumu gan uztveres (lasāmības), gan darbības ziņā.
Populāras Rails un Rails-way problēmas
- maršrutēšana,
- pirms darbības,
- lielas darbības kontrolieros,
- privātās metodes kontrolieros,
- vienreiz izmantotie sajaukumi,
- loģika skatos,
- ActiveRecord izsaukumi,
- Asociācijas,
- “trekni modeļi.”
Papildu problēmas
- Aktīvo ierakstu apstiprinājumi,
- netiešā, nevis tiešā,
- ļaunprātīga DRY lietošana,
- delegācijas asociācijās,
- pakalpojumu izsaukumi modeļos.
Rails alternatīvas
Kad runa ir par Sliedes in the Rubīns pasaulē mums ir vairākas alternatīvas. Citas uz Rack balstītas sistēmas ir šādas: - Sinatra, - Roda, - Hanami.
Ar ko tie ir unikāli?
Gan Sinatra, gan Roda piedāvā mums bloka maršrutēšanas sintakse, bet Sinatra maršrutēšana ir saraksts, bet Roda - koks. Abos ietvarstruktūrās ar modeļa slāņa implementāciju mums jātiek galā pašiem. Roda gadījumā ir lietderīgi izmantot Sequel gem.
Roda ir iedvesmojusies no Sinatras. Tā pati par sevi ir ļoti viegla, taču tai ir daudz spraudņu.
Hanami ir vistuvāk Sliedes attiecībā uz jomām, uz kurām attiecas sistēma. Svarīgākās atšķirības izmantošanas ziņā ir šādas:
- kontrolieri Sliedes pret darbībām Hanami laikā,
- īpašas klases/objekti, kas apstrādā konkrētu HTTP pieprasījumu, nevis viens kontrolieris darbībām, kas saistītas ar konkrētu resursu (modeli),
- modeļa slānis, kas balstīts uz repozitorijiem un vienībām, atdalot noturību no pārējās lietojumprogrammas, nevis aktīvo ierakstu modeli.
Hanami 1. versija stingri ierobežo ROM, uz kura tā ir balstīta, izmantošanu (3. versija, un tā jau ir 5. versija), tāpēc nav vērts izmantot tur piedāvāto modeļa slāni. Tomēr, tā kā tas ir ļoti atvērts ietvars, ir diezgan viegli tajā ieviest savu modeli.
Papildinājumi sliedēm
Ir vērts izmantot risinājumus, kas nav atkarīgi no Sliedes un ir tuvāk “tīrai” Rubīns. Prezentācijā minētie rīki ir šādi:
- Sequel (ORM, alternatīva ActiveRecord),
- ROM (objektu kartētājs),
- dry-rb bibliotēkas: dry-validations, dry-system un dry-monads.
Sequel ir viegli ievietot projekts, tā ir balstīta uz spraudņiem un īsteno arī aktīvo ierakstu modeli. Tam ir labāks zema līmeņa vaicājumu atbalsts nekā Sliedes‘ ActiveRecord.
ROM izmanto Sequel, bet tā koncepcija ir tulkot ierakstus datubāzē(-ēs) un datubāzē(-ēs). Rubīns objekti. Tā mērķis ir ātrums un dati pārveidošana. Skaidri nodala noturības slāni lietojumprogrammā.
Dry-rb bibliotēkas ir ļoti noderīgi rīki:
- sauso validāciju ir ļoti viegli izmantot. API projektiem un nodrošina lielisku kontroli pār ienākošo datu pareizību,
- dry-system ir nepieciešama neliela pieredze un pacietība, lai izstrādātāji to saprastu, taču tā ļauj ļoti elastīgi pārvaldīt atkarības lietojumprogrammā un izolēti ielādēt projekta komponentus; ja mēs vēlamies izmantot šo bibliotēku Sliedes, mēs varam izmantot sausās sliedes,
- sausās monādes teorētiski ir sarežģīts jēdziens, bet praksē tas ir vieglāk saprotams, rezultātā monādes var būt lielisks veids, kā palielināt lasāmību. kods aplūkojot konkrētus gadījumus, nevis sazaroties ar if.
Secinājumi
Vislabāk ir izmantot Sliedes lai nebūtu jāizmanto Sliedes vienu dienu.
Avoti
Raksti
Rāmji
Dārgakmeņi
Specifikācijas
Lasīt vairāk:
Kas ir Ruby on Jets un kā ar to izveidot lietotni?
1TP61Kalendārijs. Jauns Codest projekts, kas balstīts uz Vue.js
Codest iknedēļas pārskats par labākajiem tehnoloģiju rakstiem. Programmatūras veidošana 50M vienlaicīgu ligzdu (10)