Olen nyt pari päivää tutustunut Ruby on Railsiin. Kiinnostuin siitä luettuani kirjan RESTful Web Services, joka opettaa tekemään yksinkertaisia ja selkeitä web-palveluita.
Valitettavasti oma kokemukseni Ruby on Railsista ei ole kovin yksinkertainen eikä selkeä. Itse ideat, kuten taustalla oleva MVC-arkkitehtuuri ja DRY-periaate, ovat kyllä ihan hyviä, mutta implementaatio on kamala sotku.
Normaali Ruby on Rails -sovellushan koostuu kymmenistä hakemistoista muodostuvasta hierarkista, jonne generoidaan erilaisia tiedostoja ja skriptejä automaattisesti. Osaa tiedostoista on tarkoitus editoida itse ja osaa generoida uudelleen, kun tietokanta muuttuu. Uuden käyttäjän on hyvin hankala hahmottaa, mitä tiedostoja kannattaa muokata ja mitä ei.
Toisen ongelman muodostavat erilaiset pluginit, joiden toimivuus on vaihtelevaa ja sidottu Ruby on Railsin versioon. En esimerkiksi saanut AjaxScaffoldia ja ActiveScaffoldia toimimaan lainkaan (yritin RoR 1.2:lla ja 2.0:lla). Epäilemättä ne jollain tavalla saa toimimaan, mutta turhan helposti homma menee pieleen.
Törmäsin myös moniin muihin ongelmiin, kuten oletus-scaffoldingin toimimattomuuten MySQL:n kanssa RoR 2.0:ssa, ja tietokantamigraatioiden toimimattomuuteen ylipäätään (tuottivat aina vain tyhjiä migraatio-skriptejä). Tällaiset jutut ovat vihjeitä siitä, että systeemin arkkitehtuuria ei ole rakennettu tarpeeksi vankalle pohjalle; joku pieni asia menee liian helposti pieleen.
Omat kokemukseni esimerkiksi PHP:stä ovat juuri päinvastaiset. PHP toimii aina samalla tavalla missä tahansa ja on helppo asentaa käyttöjärjestelmän omasta paketinhallinnasta. Seuraavaksi taidankin kokeilla PHP:n päällä toimivaa Zend Frameworkia MVC-pohjaisten webbipalveluiden toteuttamiseen.