Rails on Rack-yhteensopiva kehys, joka on keskittynyt nopeaan sovelluskehitykseen. Valitettavasti "kaikki suoraan laatikosta" -lähestymistapa ja sokea Rails-käyttäytyminen aiheuttavat usein sovelluskoodin laadun heikkenemistä sekä vastaanoton (luettavuuden) että toiminnan osalta.
Suosittuja Rails- ja Rails-way-ongelmia
- reititys,
- before-actions,
- suuret toimet valvojissa,
- yksityiset metodit ohjaimissa,
- kerran käytetyt yhdistelmät,
- logiikka näkymissä,
- ActiveRecord-kutsut,
- Yhdistykset,
- "lihavat mallit."
Lisäongelmat
- Aktiivisen tietueen validoinnit,
- implisiittinen verrattuna eksplisiittiseen,
- DRY:n väärinkäyttö,
- valtuuskunnat yhdistyksille,
- palvelukutsut malleissa.
Vaihtoehtoja Railsille
Kun on kyse Kiskot vuonna Ruby maailmassa, meillä on useita vaihtoehtoja. Muita Rackiin perustuvia kehyksiä ovat mm: - Sinatra, – Roda, – Hanami.
Mikä tekee niistä ainutlaatuisia?
Sekä Sinatra että Roda tarjoavat meille lohkon reitityssyntaksin, mutta Sinatran reititys on lista ja Rodan puu. Molemmissa kehyksissä meidän on itse huolehdittava mallikerroksen toteutuksesta. Rodan tapauksessa on hyvä käyttää Sequel-helmeä.
Roda on saanut inspiraationsa Sinatrasta. Se on itsessään hyvin kevyt, mutta siinä on paljon lisäosia.
Hanami on lähimpänä Kiskot kun on kyse puitteiden kattamista aloista. Tärkeimmät erot käytön kannalta ovat seuraavat:
- ohjaimet in Kiskot vs. toimet Hanamissa,
- erityisiä luokkia/objekteja, jotka käsittelevät tiettyä HTTP-pyyntöä, ei yhtä ohjainta tiettyyn resurssiin (malliin) liittyviä toimia varten,
- mallitaso, joka perustuu arkistoihin ja olioihin ja erottaa pysyvyyden muusta sovelluksesta, ei aktiivista tietuemallia.
Hanamin versio 1 rajoittaa vahvasti ROMin käyttöä, johon se perustuu (versio 3, ja se on jo 5), joten siinä ehdotettua mallitasoa ei kannata käyttää. Koska kyseessä on kuitenkin hyvin avoin kehys, on melko helppoa toteuttaa sinne oma mallinsa.
Railsin lisäosat
Kannattaa käyttää ratkaisuja, jotka eivät ole riippuvaisia Kiskot ja ovat lähempänä "puhdasta" Ruby. Esityksessä mainitut työkalut ovat:
- Sequel (ORM, vaihtoehto ActiveRecordille),
- ROM (objektikartoittaja),
- dry-rb-kirjastot: dry-validations, dry-system ja dry-monads.
Jatko-osa on helppo laittaa projekti, se perustuu liitännäisiin ja toteuttaa myös aktiivisen tietueen mallin. Siinä on parempi matalan tason kyselytuki kuin Kiskot' ActiveRecord.
ROM käyttää Sequeliä, mutta sen käsite on kääntää tietokannan (tietokantojen) tietueiden välillä ja Ruby esineitä. Sen tavoitteena on nopeus ja tietojen muuntaminen. Se erottaa selvästi pysyvyyskerroksen sovelluksesta.
Dry-rb-kirjastot ovat erittäin hyödyllisiä työkaluja:
- Dry-validointia on erittäin helppo käyttää API-projekteissa, ja sen avulla voidaan hyvin valvoa saapuvien tietojen oikeellisuutta,
- dry-system vaatii hieman harjoittelua ja kärsivällisyyttä, jotta kehittäjät ymmärtäisivät sen, mutta se mahdollistaa hyvin joustavan riippuvuuksien hallinnan sovelluksessa ja projektin komponenttien lataamisen eristyksissä; jos haluamme käyttää tätä kirjastoa sovelluksessa Kiskotvoimme käyttää kuivakiskoja,
- dry-monads on vaikea käsite teoriassa, mutta käytännössä se on helpompi ymmärtää, tulos monads voi olla hyvä tapa lisätä luettavuutta koodi tarkastelemalla erityistapauksia haarautuvien if-lausekkeiden sijaan.
Päätelmät
On parasta käyttää Kiskot jotta sinun ei tarvitse käyttää Kiskot yhtenä päivänä.
Lähteet
Artikkelit
Kehykset
Jalokivet
Tekniset tiedot
Lue lisää:
Mikä on Ruby on Jets ja miten rakentaa sovellus sen avulla?
1TP53Kalenteri. Uusi Codestin projekti, joka perustuu Vue.js:ään.
Codestin viikoittainen raportti parhaista teknologia-artikkeleista. Ohjelmiston rakentaminen 50 miljoonalle yhtäaikaiselle pistorasialle (10)