“Rails” yra su "Rack" suderinama sistema, skirta greitam programų kūrimui. Deja, dėl požiūrio "viskas iš dėžutės" ir aklo "Rails" elgesio dažnai prarandama programos kodo kokybė - tiek priėmimo (skaitomumo), tiek veikimo požiūriu.
Populiarios "Rails" ir "Rails-way" problemos
- maršruto parinkimas,
- prieš veiksmus,
- dideli veiksmai valdikliuose,
- privatūs metodai valdikliuose,
- mišiniai naudojami vieną kartą,
- logika vaizduose,
- "ActiveRecord" grįžtamieji ryšiai,
- Asociacijos,
- “riebalų modeliai”.”
Papildomos problemos
- Aktyvių įrašų patvirtinimai,
- numanomas, o ne aiškus,
- piktnaudžiavimas sausuoju,
- delegacijos į asociacijas,
- paslaugų iškvietimus modeliuose.
"Rails" alternatyvos
Kai kalbama apie Bėgiai į Ruby pasaulyje, turime keletą alternatyvų. Kitos "Rack" pagrindu sukurtos sistemos yra šios: - Sinatra, - Roda, - Hanami.
Kuo jie unikalūs?
Ir "Sinatra", ir "Roda" siūlo mus bloko maršrutizavimo sintaksė, tačiau Sinatroje maršrutizavimas yra sąrašas, o Rodoje - medis. Abiejuose karkasuose su modelio sluoksnio įgyvendinimu turime tvarkytis patys. Roda atveju pravartu naudoti Sequel brangakmenį.
Rodą įkvėpė Sinatra. Ji pati savaime yra labai lengva, tačiau turi daug įskiepių.
Hanami yra arčiausiai Bėgiai kai kalbama apie sritis, kurioms taikoma sistema. Svarbiausi skirtumai naudojimo požiūriu yra šie:
- valdikliai Bėgiai prieš Hanami veiksmus,
- specialios klasės / objektai, skirti konkrečiai HTTP užklausai tvarkyti, o ne vienas valdiklis, skirtas veiksmams, susijusiems su konkrečiu ištekliu (modeliu),
- modelio sluoksnis, pagrįstas saugyklomis ir esybėmis, atskiriantis išliekamumą nuo likusios taikomosios programos, o ne aktyvaus įrašo modelis.
"Hanami" 1 versija griežtai riboja ROM, kuria ji pagrįsta, naudojimą (3 versija, o ji jau yra 5), todėl neverta naudoti ten siūlomo modelio sluoksnio. Tačiau, kadangi tai yra labai atvira sistema, gana lengva ten įdiegti savo modelį.
"Rails" priedai
Verta naudoti sprendimus, kurie nepriklauso nuo Bėgiai ir yra artimesni “gryniems” Ruby. Pristatyme paminėtos šios priemonės:
- Sequel (ORM, alternatyva ActiveRecord),
- ROM (objektų žemėlapis),
- dry-rb bibliotekos: dry-validations, dry-system ir dry-monads.
Sequel lengva įdėti į projektas, ji pagrįsta įskiepiais ir taip pat įgyvendina aktyvaus įrašo modelį. Ji turi geresnį žemo lygio užklausų palaikymą nei Bėgiai‘ ActiveRecord.
ROM naudoja "Sequel", tačiau jo koncepcija yra versti įrašus iš duomenų bazės (-ių) į Ruby objektai. Juo siekiama greičio ir duomenys transformacija. Aiškiai atskiria atkaklumo sluoksnį programoje.
"Dry-rb" bibliotekos yra labai naudingos priemonės:
- sausą patvirtinimą labai lengva naudoti API projektus ir leidžia puikiai kontroliuoti gaunamų duomenų teisingumą,
- dry-system reikia šiek tiek praktikos ir kantrybės, kad kūrėjai ją perprastų, tačiau ji leidžia labai lanksčiai valdyti priklausomybes programoje ir atskirai įkelti projekto komponentus; jei norime naudoti šią biblioteką Bėgiai, galime naudoti sausus bėgius,
- sausosios monados teoriškai yra sudėtinga sąvoka, tačiau praktiškai ją lengviau suprasti, todėl monados gali būti puikus būdas padidinti skaitomumą kodas nagrinėjant konkrečius atvejus, o ne šakotus if.
Išvados
Geriausia naudoti Bėgiai kad nereikėtų naudoti Bėgiai vieną dieną.
Šaltiniai
Straipsniai
Rėmeliai
Brangakmeniai
Specifikacijos
Skaityti daugiau:
Kas yra "Ruby on Jets" ir kaip sukurti programėlę naudojant šią programėlę?
1TP68Kalendorius. Naujas Codest's projektas, paremtas Vue.js
"Codest" kassavaitinė geriausių technologijų straipsnių ataskaita. Programinės įrangos kūrimas 50 mln. vienu metu veikiančių lizdų (10)