Första borste med Ruby on Rails


Original: http://www.digitalsanctuary.com/tech-blog/general/first-brush-with-ruby-on-rails.html

Tidigare i veckan fick jag umgås med en vän att prata om ett projekt han arbetade på och jag bestämde mig för att peta på den lite med honom, och som sådan fick mina första praktisk erfarenhet med Ruby on Rails.

Ruby on Rails eller RoR har uppenbarligen enorm buzz och är ett mycket populärt ramverk webb applikationsutveckling nyligen. Massor av människor har lovordat det och massor av bra platser har byggts med hjälp av det. Jag har aldrig brytt sig om att lära sig det själv för ett par anledningar. Först är jag en Java kille (ATG och Seam) och har varit i flera år. Med tanke på begränsad tid och begränsade hjärnkapacitet jag hellre läsa mer Java / Java Frameworks / etc … än att försöka lära sig ett helt nytt språk. För det andra många betrodda vänner rådde mig att medan RoR gör somethings riktigt bra och gör en del saker riktigt enkelt, när du behöver för att försöka bryta sig utanför de förut inbillade struktur / funktioner som RoR ger ur lådan, saker snabbt gå neråt. Dessa skäl åt sidan, har den höga surr menade Jag har alltid varit lite nyfiken, så denna möjlighet att äntligen få mina händer lite smutsiga med RoR var välkommen.

Komma igång med RoR på Mac OS X är mycket enkelt. Det är förinstallerade och fungerar direkt ur lådan. Men efter uppgradering Rails och pärlor jag sprang in i en känd blockerings bugg som efter viss googla jag kunde fixa med nedgradering rake till 0.8.7 i Gemfile. Så inte en 100% mjuk start, men inte så illa.

De Rails genererar ställnings kommandon gör det mycket enkelt att skapa ett dataobjekt, tillhörande schemaändringar (som förvaltas genom migration mekanismen raken) och relaterade CRUD sidor och controllers. Du kan komma igång mycket snabbt och skapa, surfa, redigera och radera poster. Detta kan göra det mycket lätt att få en grundläggande program som ut, och ger massor av VVS automatiskt.

Jag fick inte mycket längre än några enkla controller ändringar, utgående e-post skickas, osv … så jag är långt ifrån en verklig RoR utvecklare. Men jag sprang in tillräckligt smärtpunkter så långt att jag inte tror att RoR är för mig. Jag vill inte starta några språk / ram krig, men här är vad jag sprang in:

En hel del av den „magiska“ verkar bra i början, men så fort du vill gå utanför boxen eller justera hur saker och ting fungerar, blir det en massiv skuld. Till exempel när du använder byggnadsställning kommandot generera för att skapa dataobjekt som du kan ställa relationer / främmande nycklar genom att skicka in ett kolumnnamn som matchar formen OtherClass_id: heltal, vilket kommer att tolkas som en FK association till den andra klassens id kolumnen att gå objekten. Det här är bra. Men vad händer om du vill lägga till två relationer till samma Annan klass? Till exempel ett meddelande har en avsändare och en mottagare, som båda är Användare. Jag kan använda USER_ID: heltal för en, men hur gör jag den andra? Hur använder jag kolumn / egenskapsnamn som inte passar att namnkonventionen, till exempel jag vill sender_id och recipient_id. Ingen av de handböcker för jag kunde hitta täckt det. Googla efter saker som „byggnadsställning flera främmande nycklar“ inte svara på frågan, etc. … Jag är säker på att det är möjligt, men ta reda på hur man inte var lätt, och standard sätt hudar och döljer den verkliga VVS så det är inte lätt att lista ut hur man gör enkla ändringar eller tillägg.

Dataobjektklasser i app / modellområde alla sträcker Active :: Base och som genereras av generera byggnadsställning är helt tom. Det finns ingen ledtråd eller angivelse av fälten, någon logik finns, några relationer, fastighetstyper, etc. …

Emailer klasser använder magiska mappningar mellan metodnamn och e-postmallar. Eftersom det är „magiskt“ Jag har ingen aning om hur man ändrar en mall filnamn om jag ville. App / hjälpklasser skapas, men de är tomma, så jag har ingen aning om vad de gör, eller tänkt att göra. Och så vidare. Om jag var en expert RoR utvecklare Jag är säker på att jag skulle veta, eller om jag läste några böcker jag skulle förstå, men börjar om från början och försöka lära sig så jag går, visade det väldigt frustrerande.

Den mycket bjudet RoR gemenskapen visade sig vara mer av en skuld än en tillgång för mig. Särskilt i kombination med de många, snabba, bakåt inkompatibla, RoR releaser som har kommit ut hittills. När du söker information, guider och svar relaterade till RoR du sluta hitta saker spridda över: bloggar, forum, e-postlistor, Ruby platser, RoR platser, grupper, etc … De flesta av dessa inlägg / dokument hänvisar till äldre versioner av RoR . De flesta av dem har inte datum eller ange vilken version de arbetar med. Många frågor på forum är obesvarade. Slutresultatet är att du hittar vad du hoppas är en rimlig lösning för en fråga bara för att upptäcka att de kodexempel eller anvisningar är skrivna för en tidigare version av RoR, och försöker att följa instruktionerna eller klistra in koden i den aktuella RoR version resultat i konstiga fel eller värre.

Varje ny version av RoR verkar massivt förändra och / eller bryta vanliga API: er och förändra hur saker ska göras, osv … Jag sprang in i flera situationer där det verkar som en metod döptes, utan bakåtkompatibel alias kvar på plats, av någon annan anledning än att de ville byta namn, vilket bryter äldre kod för något verkligt syfte.

Jag är också ett fan av svagt typade språk. Starkt typade språk ger kompilering validering, IDE automatisk komplettering, och lätt att navigera API-dokumentation. Med större och mer komplexa projekt, eller projekt som omfattar många utvecklare, eller projekt som använder många 3rd bibliotek party, dessa fördelar blir betydande i min mening.

Så från min synvinkel, tillhandahåller JBoss Seam flesta av fördelarna med RoR, inklusive flera förbättringar, utan många av skulderna. Plus att det är i Java som är min starkaste programmeringsspråk. Jag ska hålla med Seam, men jag ska ändå respektera skapelser av folk som använder andra verktyg, inklusive RoR.

Comments are closed.