Rails is een Rack-compatibel framework dat gericht is op snelle applicatieontwikkeling. Helaas zorgen de "alles uit de doos"-aanpak en het blinde Rails-weg gedrag er vaak voor dat de applicatiecode aan kwaliteit verliest, zowel wat betreft de ontvangst (leesbaarheid) als de werking.
Populaire Rails en Rails-weg problemen
- routing,
- voor-acties,
- grote acties in controllers,
- privémethoden in controllers,
- mixins eenmaal gebruikt,
- logica in weergaven,
- ActiveRecord callbacks,
- Verenigingen,
- "dikke modellen."
Bijkomende problemen
- Actieve recordvalidaties,
- impliciet boven expliciet,
- misbruik van DROOG,
- delegaties naar verenigingen,
- service-oproepen in modellen.
Alternatieven voor Rails
Als het gaat om Rails in de Ruby wereld hebben we verschillende alternatieven. Andere frameworks gebaseerd op Rack zijn onder andere: - Sinatra, – Roda, – Hanami.
Wat maakt ze uniek?
Zowel Sinatra als Roda bieden ons een block routing syntax, maar routing in Sinatra is een lijst en in Roda - een boom. In beide frameworks moeten we ons zelf bezighouden met de implementatie van de modellaag. In het geval van Roda is het een goed idee om de Sequel gem te gebruiken.
Roda is geïnspireerd op Sinatra. Het is op zichzelf erg licht, maar het heeft veel plugins.
Hanami is het dichtst bij Rails als het gaat om gebieden die onder het kader vallen. De belangrijkste verschillen in termen van gebruik zijn:
- regelaars in Rails vs. acties in Hanami,
- toegewijde klassen/objecten die een specifiek HTTP-verzoek afhandelen, niet één controller voor acties met betrekking tot een specifieke bron (model),
- modellaag gebaseerd op repositories en entiteiten, die persistentie scheidt van de rest van de applicatie, niet het actieve recordpatroon.
Hanami versie 1 beperkt sterk het gebruik van ROM waarop het is gebaseerd (versie 3, en het is al 5), dus het is niet de moeite waard om de modellaag te gebruiken die daar wordt voorgesteld. Omdat het echter een zeer open framework is, is het vrij eenvoudig om het model zelf te implementeren.
Supplementen voor Rails
Het is de moeite waard om oplossingen te gebruiken die niet afhankelijk zijn van Rails en dichter bij "puur" staan Ruby. De tools die in de presentatie worden genoemd zijn:
- Sequel (ORM, alternatief voor ActiveRecord),
- ROM (object mapper),
- dry-rb bibliotheken: dry-validations, dry-system en dry-monads.
Sequel is gemakkelijk in een projectHet is gebaseerd op plugins en implementeert ook het actieve recordpatroon. Het heeft betere ondersteuning voor zoekopdrachten op laag niveau dan Rails' ActiveRecord.
ROM gebruikt Sequel, maar het concept is om te vertalen tussen records in de database(s) en Ruby objecten. Het is gericht op snelheid en gegevenstransformatie. Scheidt duidelijk de persistentielaag in de applicatie.
Dry-rb bibliotheken zijn erg nuttige hulpmiddelen:
- dry-validation is heel eenvoudig te gebruiken in API-projecten en biedt een goede controle over de juistheid van binnenkomende gegevens,
- dry-system vergt wat oefening en geduld van de ontwikkelaars om het te begrijpen, maar het maakt zeer flexibel beheer van afhankelijkheden in de applicatie en het laden van projectonderdelen in isolatie mogelijk; als we deze bibliotheek willen gebruiken in Railskunnen we droge rails gebruiken,
- dry-monads is een moeilijk concept in theorie, maar in de praktijk is het makkelijker te begrijpen, het resultaat monads kan een geweldige manier zijn om de leesbaarheid van code door specifieke gevallen te overwegen in plaats van vertakkende ifs.
Conclusies
Je kunt het beste Rails zodat je niet Rails op een dag.
Bronnen
Artikelen
Kaders
Juwelen
Specificaties
Lees meer:
Wat is Ruby on Jets en hoe bouw je er een app mee?
Vuekalender. Een nieuw project van Codest gebaseerd op Vue.js
Codest's wekelijkse verslag van de beste tech-artikelen. Software bouwen voor 50M gelijktijdige sockets (10)