Ruby on Rails?
Het afgelopen jaar lees ik veel over Ruby on Rails, oftewel Rails. Ik leer niet snel een nieuwe programmeertaal, omdat ik me wil focussen op één programmeertaal. In mijn geval is dat PHP, omdat er een grote PHP community is en omdat het opensource is. Waar ik echter met PHP moeite mee heb, is het hele OOP gebeuren. Er zijn wel hulpmiddelen zoals Smarty, maar toch vind ik dat niet helemaal lekker werken, mede omdat het een extern stuk software is. Met Rails schijnt dat allemaal anders te zijn, maar vooral makkelijker!
Maarja, dat zal allemaal wel…
Omdat al de lovende blog posts toch aanbleven, heb ik twee weken geleden besloten om toch maar een boek te bestellen over Rails: Agile Web Development with Rails (2nd edition), uit de Pragmatic Bookshelf. Dit scheen hét Rails boek te zijn en tot nu toe ben ik het daar helemaal mee eens.
Je vind in dit artikel enkele constateringen van mij over Rails, geen code maar mijn mening over Rails na twee honderd bladzijden in een boek daarover te hebben gelezen en er enkele uren mee te hebben gewerkt. Aangezien ik nog niet eens halverwege het boek ben, kan ik natuurlijk nog geen volwaardig oordeel geven over Rails in zijn geheel en het boek Agile Web Development with Rails, maar het begin belooft veel goeds. Ik ben veel over de taal Ruby en het framework Ruby on Rails, te weten gekomen. Ja inderdaad, ook Rails is een framework.
- Rails is niet bedoeld voor ‘kleine scriptjes’
Een simpel email formulier met Rails is not done. Niet voor mij in ieder geval. Waarom een applicatie helemaal OOP schrijven, als het ook in één of twee bestanden kan? Voor dit soort dingen blijf ik gewoon PHP gebruiken. - Alles is OOP
In Rails kun je niks bewerkstelligen zonder dat je Object Orientated bezig bent. Dit is natuurlijk logisch, want we hebben hier te maken met een framework die speciaal het OOP juist makkelijker maakt. Met Ruby zelf kun je natuurlijk wel applicaties schrijven zonder OOP bezig te zijn. - Rails is wel heel gemakkelijk!
Een hoofddoel van de Rails ontwikkelaars was het aantrekkelijker maken van programmeren. Dit is hun zeker gelukt. De code die je in Rails schrijft ziet er mooi en logisch uit en er is weinig Rails code nodig voor iets waar je in een andere taal erg veel regels code nodig hebt. - Databases creëren en onderhouden is erg goed geïntegreerd in Rails
Wanneer ik met PHP & MySQL bezig ben gebruik ik altijd PphpMyAdmin om mijn databases te maken, omdat ik niet echt een command-line fan ben. Dit werkt allemaal uitstekend en ik ben er altijd tevreden over geweest.Rails werkt heel anders in combinatie met MySQL. Databases worden door middel van zogenaamde migrations aangemaakt. Via een simpel commando op de ruby command-line maak je zo’n migration aan. Er wordt vervolgens een bestand voor je aangemaakt waarin je de tabellen aanmaakt, wijzigt of verwijdert. Waarna je dit bestand hebt voltooid voer je deze mirgration via de command-line weer uit, met een simpel commando. Het is echt heel simpel: ‘rake db:migrate’. Vervolgens wordt de database gewijzigd met de wijzingen die je in het migration bestand hebt aangegeven.Wat omslachtig allemaal hè? Absoluut niet! Want alle migrations krijgen hun eigen versienummer, waardoor je met een ander ‘rake’-commando weer terug kunt vallen op een oudere migration, zodat je niet alles handmatig weer hoeft terug te zetten. Erg handig van de Rails programmeurs. Ze denken ook overal aan ;) - Scaffolding!!!
Wat??? Ja!!! Scaffolding, een geweldige uitvinding!Stel je de volgende situatie voor: je hebt net je hele database gemaakt en wilt deze graag gaan testen, er wat data in zetten en eventueel nog een beetje wijzigen. Hiervoor moet je dan weer een hele applicatie gaan schrijven.In rails hoeft dat niet. Door 2 woorden in een rails bestand te zetten wordt de hele applicatie voor je gemaakt: ‘scaffold :tabelnaam’. Dit commando maakt een applicatie (in het geheugen – de applicatie is nog nergens fysiek te zien) voor je aan die het volgende kan:
- items aan je database toevoegen
- items uit je database wijzigen
- items uit je database verwijderenHet is een erg simpele applicatie, maar oh zo handig. Mist er iets in de database? Maak een nieuwe migration aan met daarin de wijzingen. Herlaad je pagina met de scaffold daarin en ook daar is de wijziging te zien. Ben je tevreden met je scaffold en database, dan kun je de scaffold ook fysiek laten genereren met een simpel commando en voilá: je hele applicatie is klaar! Dat is natuurlijk niet waar. Het werkt wel, maar is natuurlijk geen volwaardige applicatie. Er is geen enkele validatie of andere beveiliging, maar het bespaart je ontzettend veel geestdodend programmeerwerk. - Data valideren
Het valideren van data is heel erg gemakkelijk. Stel je hebt een comments-formulier met daarin een naam, email adres en commentaar veld. Als je wilt dat naam en commentaar moet worden ingevuld, dan kan dat met 1 simpele regel code in je controller: ‘validates_presence_of :naam, :commentaar’. Dit stukje code genereert een melding wanneer naam en commentaar niet ingevuld zijn en zorgt ervoor dat het formulier weer ingevuld en al voorgeschoteld wordt. Zoiets in PHP schrijven kost minstens tien keer zoveel code.
Zo zijn er nog tig punten die ik zou kunnen bespreken. Naast de bovenstaande validate-functie zijn er nog veel meer validatie-functies die je heel veel werk uit handen nemen en ook de migration tool is veel handiger dan hierboven beschreven is.
Als dit alles je van binnen een warm gevoel geeft of je gewoonweg nieuwsgierig maakt, dan raad ik je echt aan om het boek of de pdf te kopen. Voor het boek raad ik bol.com aan (€36,99) en de PDF kun je bij Pragmatic Programmers zelf kopen voor €23,50. Ook is er een combimogelijkheid.
PS.
Voor Ruby on Rails heb je aparte server software nodig, maar als je je hier liever niet mee bezighoud (zoals ik), dan is er een hele simpele oplossing: InstantRails. Uitpakken en draaien maar! Download hier de laatste versie.