Jag har precis utvecklat klart ett projekt i Ruby on Rails och det är en ny version av KalkyleraMera.se. Det är ett projekt som jag startade med under PBC 2011 men som sedan varit halvt vilande under större delen av tiden. Under september satte jag mig ned med ambitionen att göra klart projektet och nu är det alltså äntligen klart. Eller, projektet är inte lanserat än eftersom jag håller på att konfigurera upp server och så vidare.

Jag tänkte dela med mig lite av mina lärdomar och erfarenheter av Ruby on Rails för dig som eventuellt funderar på att köra ett projekt och vad du kan förvänta dig.

Anledningen till att jag valde att utveckla i Ruby on Rails var att jag blev påverkad av två vänner under PBC och tidigare att prova på det. Jag gjorde en testapplikation lokalt för att hålla reda på att göra-listor, webbsidor, fakturor etc och det var riktigt smidigt så jag fortsatte med KalkyleraMera 2.0 som andra projekt.

De stora fördelarna som jag snabbt upptäckte med Ruby on Rails var:

  • Det är roligare att programmera – koden är helt enkelt smartare
  • Man kan åstadkomma mycket mer i funktionalitetsväg. Det är tex relativt enkelt att göra en sida flerspråkig. Med hjälp av plugins, s.k. gems, så kan man lätt ta del av andras funktioner och snabbt bygga smarta lösningar.
  • Koden blir mycket mer strukturerad – Själva “rails”-delen av Ruby on Rails är ju ett ramverk (precis som Cake för php) vilket gör att allt hamnar där det ska. Mycket går också att återanvända. Ganska stor skillnad från mina php-projekt.
  • Det är lättare att felsöka

Några av de nackdelar jag upptäckt är:

  • Tröskeln för att lära sig framförallt ramverket Rails är ganska hög. Jag har varit ganska beroende av support under den första tiden.
  • Ibland vill man bara “lösa problemet” och inte göra det The Rails Way, vilket kan vara något frustrerande. Rails tvingar en att göra det på rätt sätt.
  • Det är inte lika lätt att bara ladda upp på ett webbhotell – tuta och köra. Det finns tex inga webbhotell i Sverige (rätta mig om jag har fel) som har Rails rakt av.

Just det sista är en av anledningarna till att jag inte lanserat projektet jag blev klar med förra veckan. Jag kommer att prova två lösnigar parallellt: Heroku.com och en VPS hos CityCloud.se. Heroku är den något lättare varianten (om än inte superenkel) men lite dyrare. VPS innebär att jag måste installera en Ubuntu-server (Windows-servrar är inte att rekommendera för Rails tydligen) och jag kan inte Ubuntu. Detta leder till att jag anlitat en killa till att konfa den åt mig. I slutändan är det dyrare att hosta ett rails-projekt än ett simpelt php-projekt.

De senaste veckorna har jag arbetat kopiöst mycket med det här projektet för att få klart det (~12 h per dag) och hade jag skrivit det här inlägget då så hade jag nog varit mer skeptisk till att göra om det. Det bör dock påpekas att KalkyleraMera 2.0 var ett ganska dåligt nybörjarprojekt då det helt enkelt var ganska komplext.

Nu har jag dock bestämt mig för att köra vidare på Rails och i princip överge php. Detta framförallt för att jag vill göra bättre och smartare applikationer i framtiden och jag vill inte sitta och fulhacka på samma sätt som jag till viss mån gjort. Mitt nästa Rails-projekt blir att göra en vettig version av Köpa.se, som i ärlighetens namn inte är en speciellt bra sida idag.

Jag återkommer med lite mer om Rails när jag lanserar nya KalkyleraMera (och den engelska varianten CountCalculate.com). Kom gärna med frågor om du är nyfiken på Rails.

Slutligen, ett stort tack till Manuel Meurer som hjälpt mig ofantligt mycket med detta. Tack också till Sebastian Johnsson och StackOverflow.

 

 

One Response to Ett Ruby on Rails-projekt – lärdomar

  1. Tysken says:

    Sweet! Saved one more programmer from the death grip of PHP. Welcome to the sunny side of life! :)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>