![]() |
Gjorde om sida från php till Ruby on Rails
Hej,
Jag har precis genomfört ett projekt modell större där jag gjorde om en sida från php till Ruby on Rails. Projektet var i princip mitt första och tog ganska lång tid. Det är ganska många som varit nyfikna på varför osv så jag tänkte att det kanske kunde vara passande med en tråd om mina erfarenheter. Det bör påpekas att jag jobbat med php i fem år men aldrig använt ett ramverk så eventuella jämförelser är lite haltande. Därtill har jag bara jobbat med rails i 6 mån nu men har gått djupare in i det än jag någonsin gjort med php. Jag är en medelgod programmerare som gärna "klipper och klistrar". Först och främst. Anledningarna till att jag valde att göra om sidan (som var fullt fungerande) till Rails var att jag blev övertygad om en Rails-frälst vän att prova. Att jag sedan bestämde mig berodde på: - Att jag kunde få ut mycket mer av sidan. Bättre funktionalitet etc. Jag kände helt enkelt att jag kunde göra mer med Rails. - Gems - de olika sorters plugin som finns till Rails gör att man slipper programmera en massa saker. - Programmeringsspråket i sig är riktigt elegant. En kommando rad kan liksom bara läggas på, tex Time.now.to_date + 4.days = dagens datum + 4 dagar. - Strukturen - Ruby är ju själva programmeringsspråket och Rails ramverket. Detta gör det lätt att veta var man ska sätta saker. Koden blir mycket lättare att hålla koll på. - Konsol och felsökning. Man har en konsol som skapar mycket åt en automatiskt, därtill en aktiv webblogg där man hela tiden kan se parametrar och vad som händer i webbservern vilket är mycket praktiskt i felsökning. Jag famlar inte lika mycket i mörkret som med php och det gör programmeringen roligare. Några nackdelar jag upplevt: - Det är en viss tröskel att lära sig språket. Man kan inte bara tuta och köra på samma sätt som med php. På gott och ont. Jag har svurit en hel del kan erkännas. - Det är inte riktigt lika lätt att hitta svar via Google. - Ibland skiter man i om det är 100% rätt men det vill inte gärna Rails. Det kan vara lite frustrerande ibland när man bara vill fulhacka (även detta på gott och ont). - Server och publicering är mer komplicerat / dyrare. Jag stod mellan att välja mellan en VPS med Ubuntu (vilket i princip innebar att jag var tvungen att lära mig Ubuntu...halvsugen) eller använda Heroku.com. Det temporära valet föll på Heroku.com som är snyggt och välgjort men dyrt. Man betalar för prestanda och funktion och jag betalar för närvarande $35 i månaden. För mindre applikationer (nya sidor tex) är det dock gratis! Så, fråga så ska jag se om jag kan svara. Jag hade själv velat ha en sån här tråd när jag började. |
Spontant, mycket spännande projekt. Har du någon uppfattning om prestanda / RoR vs. PHP?
|
Nej, inte direkt. Jag har inte gjort några såna tester...
|
Intressant.
Hur gick själva processen till när du skrev om sidan? Du skriver att du inte jobbat i ramverk tidigare, är det så att sidan inte var uppbyggd i MVC och du fick göra en sådan omarbetning också? Hittade du enkla procedurer för att omvandla rutiner i php till nya rutiner i Ruby/Rails? |
Jag är främst nyfiken på vad du kunde göra i Ruby on Rails som du inte kunde göra med php. Vilken databas använder du? Har du bytt databas också?
|
Edit: Kan nog vara relevant att nämna att sidan är kalkylera mera .se för att förstå mina exempel.
Magnus: Sidan var uppbyggd dels i form av strukturen på sidan men mycket av "intelligensen" ligger i algoritmerna jag gjort för kalkylerna på sidan. Själva strukturen gjorde jag om såpass att jag inte återanvände så mycket från den men algoritmerna för beräkningarna återanvände jag. I praktiken klistrade jag in dem först och översatte till Ruby allt eftersom. Min gamla sida var långt ifrån MVC (har aldrig provat Zend eller Cake) så hela det tänket var nytt också. Jag har gjort ett mindre (offline) projekt innan så jag hade lärt mig grunderna då. Jonny: Jag tror det intressanta i din fråga ligger i ordet "jag" för jag kunde inte göra speciellt mycket i php innan utan förlitade mig ganska mycket på grundfunktionaliteter. If-satser, loopar, post, smarta sätt att hantera databaser etc. Ganska grundläggande saker. Jag kunde dock pussla ihop dem till ganska komplexa sidor. Med Rails kunde jag tex mycket, mycket enklare räkna med datum, återanvända kod, centralisera koden (så att en funktion löste samma sak över hela sidan på ett sätt jag inte lyckades med innan). Ett konkret exempel är att när jag gjorde konverteringar mellan mått för konverteraren kunde jag återanvända detta enkelt överallt på sidan (tex när man räknar volym och får resultatet i olika enheter). Jag använde mysql lokalt och postgre-sql på Heroku.com. Det var relativt smärtfritt med ett undantag (rand() heter random() i postgre, det tog ett tag innan jag fattade varför det blev fel). Jag skulle vilja jämföra detta med php + cakephp men orkar inte lära mig ett nytt ramverk igen. Generellt sett är dock ruby-koden mycket renare, svårt att uttrycka det bättre. En mycket stor poäng är att jag med RubyOnRails också enkelt kunde göra sidan på flera språk (bara eng & sv än så länge) vilket var omöjligt på det sättet jag gjorde innan. Vet dock inte hur det är med php med ramverk dock. |
Håller med om att är ett intressant projekt. Om inte syftet var att bredda kunskaperna och lära sig ett nytt språk / ramverk så försvinner poängen lite grann. Allt du nämner går alldeles utmärkt att göra i PHP (med eller utan ramverk) eller .NET också. Den stora nackdelen med RoR är ju som du själv nämner att man inte har någon direkt valfrihet när det gäller hosting vilket är lite extra trist när man arbetar med svenska webbplatser på det sättet du gör. Jag hade inte tagit samma beslut själv men det betyder naturligtvis inte att det är fel.
Bara för att ta datumberäkningen som exempel så går det ju att använda "+1 week" eller "next Thursday" direkt i PHP och på DateTime i .NET har du addDays, addMinutes etc. Du kan till och med göra detta direkt i js om så önskas. Det som inte finns är bara att bygga egna funktioner och klasser för så har man återanvändbar kod även där. Att bygga webbplatser i flera språk är heller inga direkta svårigheter oavsett språk. Jag menar inte att RoR skulle vara sämre på något vis utan snarare att flera av fördelarna du nämner är mer subjektiva sådana. Däremot tror jag mycket väl att programmeringsspråk kan passa personer olika bra. Vi är alla olika, lyckligtvis. Med tanke på det svenska hostingutbudet så är det nog ändå en bra idé att du lär dig VPS ganska så snart om du tänker fortsätta med RoR. Prestandan ska väl rent generellt inte vara något problem för RoR idag. Liksom för PHP och .NET handlar det mer om hur koden skrivs än vilket språk som används. |
Varför valde du postgresql som databas?
|
Tycker du gör lite fel i att jämföra ett ramverk (RoR) med ett programmeringsspråk (PHP). Du kanske hade sett annorlunda på saken om du börjat med Zend, eller annat ramverk, för fem år sedan, eller om du för 6 månader sedan började programmera i ruby direkt istället för RoR.
PHP's motsvarighet till Gems heter pear, finns tonvis med färdig kod att använda sig av. PHP's low-barrier-to-entry som gör det möjligt, som du säger, att fulhacka saker är inte att se som något positivt. Det skapar en acceptans för slarv, det sprids dålig kod, folk lär sig "dålig" programmering etc... Har svårt att tro att det skulle finnas något som du kan göra i ruby som du inte kan göra i PHP, möjligtvis multitrådning om nu det kommer native i ruby |
Citat:
Citat:
Näe. men jag tror att jag förstår vad du menar. Hur PHP är som språk att jobba med kan jag inte svara på men jag kan dra vissa paralleller till Java vs C# av det jag har sett av både Ruby och PHP. Är det inte så att Ruby som språk är tydligare för utvecklaren och att det leder till ökad produktivitet jämfört med PHP som språk? Jag tänker på språkets uppbyggnad och standard-API:et. Citat:
Själv har jag gått över från ASP/VBScript > Java > Asp.Net (C#) och kan säga att jag lärt mig massor vid varje byte. Lustigt nog var det krångligaste bytet det från Java, där man i regel använder sig av MVC-ramverk, till .NET. Trots att språken i sig är lika. |
Citat:
|
Absolut, håller med.
Men just i detta fall fick jag uppfattningen att trådskaparen hade programmering som yrke och då vore det fel om han lät sig avskräckas av det faktum att ruby verkar vara svårare att "fulhacka" jämfört med php. Han tar upp det som en nackdel, vilket i varje fall i mina öron låter lite vanvettigt :) |
Roligt med all er feedback! Det bör nog påpekas att jag inte rackar ned på php. Jämförelsen haltar som sagt eftersom jag aldrig testat ramverk för php och kan inte jämföra rakt av. Jag gissar att mycket av det jag gör med Rails nu också kan göras med php och andra programmeringsspråk.
Syftet med tråden var mycket att lyfta fram lite frågor och svar kring Rails som det annars var ganska tomt om här på WN tycker jag. Därtill tror jag att många programmerar utan ramverk och inte har någon riktig koll på RubyOnRails (eller kanske vad ramverk egentligen innebär). Syftet är egentligen inte så mycket att utröna vilket programmeringsspråk som är bäst utan bara mina upplevelser av det. Jag tror att om jag gjort detta idag hade jag eventuellt gått vägen via ett ramverk för php och lärt mig det först. Hade jag vetat om problematiken med hosting hade jag nog varit än mer angelägen om det. Några svar på era frågor: - Jag valde inte postgre egentligen. Heroku.com har det som förvald db. - Det stämmer. Jag har inte utforskat programmeringen mer än jag behövt, 5 års erfarenhet betyder inte att jag haft en stadigt ökande kurva :) Nu har jag fått lära mig mycket mer programmering på 6 mån än jag tvingats göra innan. - Med tröskeln menar jag både språket och ramverket. Att tänka ramverk och MVC är ganska nytt. De flesta funktioner för själva Ruby är ganska lätt att hitta i referenser och mha Google. Skulle vara intressant att höra från någon som testat php med ramverk samt RubyOnRails och dennes upplevelser om de olika språken. Oavsett vad så känns ett ramverk nästan som ett måste om man ska göra lite mer seriösa webbsidor. |
Citat:
Citat:
I takt med att komplexiteten över så försvinner möjligheten att använda ett webhotell. Citat:
Citat:
Rails-teamet har löst många skönhetsproblem m.h.a monkey-patchning, något som b.la gjort de möjligt att skriva just 3.days.ago + 1.day. Citat:
Citat:
|
Det hanns med två svar medan jag skrev.
Jag är långt ifrån programmerare till yrket. Jag lever dock på att göra webbsidor där programmering är en del av vad jag gör. Denna sida är den mest avancerade jag gjort (mycket är Wordpress samt lite enklare varianter). Det jag menar med att det är positivt med fulhack är att det är ganska skönt att bara få igenom nåt ibland när man inte orkar gå till botten med varenda bugg som dyker upp. Det är dock oftast bara en kortsiktig lösning men flyter båten så gör den det, har jag resonerat :) Nackdelen är ju uppenbar, det fungerar inte långsiktigt och gör uppgraderingar av webbsidorna till mycket svårare än det hade varit utan fulhack. |
Nerix: Mycket intressant att höra dina synpunkter också!
|
Citat:
Ruby-communityt uppmuntrar, enligt egen mening, till bättre, stabilare och mer modulär kod. Pakethanterare som "gem" gör det supr-enkelt att distribuera sin kod och på så vis modularisera sin kodbas. Tester är på något vänster är obligatoriskt, något som man inte riktigt få känslan av i PHP-communityt. Man pushas hela tiden för att bli bättre, skriva bättre kod, testa på nya tekniker, något som gör en till en bättre utvecklare. Folks öppenhet ökar även utvecklingshastigheten. Ta bara en titt på Github. Ruby har trots sina fåtalet användare, näst flest repos. I princip all projekt (även detta i skrivande stund) på "most watched" är Ruby-relaterade projekt. Det är helt enkelt väldigt roligt att vara delaktig i ett så snabbt växande community som Ruby faktiskt är. |
Citat:
Citat:
|
tartareanddesire: Jag håller med dig om att det kan vara overkill att lära sig ett ramverk (öht) om man inte håller på med lite mer komplexa sajter. Däremot så är det många av mina gamla sidor som jag känner att jag kan göra saker jag inte kunnat drömma om innan nu med RoR / ramverk.
Svårt att beskriva för någon var gränser går dock och när "kunskapsinvesteringen" blir betald i form av tidsbesparande. Har man lite ambitioner med sitt webbutvecklande tycker jag dock att man bör lära sig ett ramverk. |
Citat:
|
Verkar vara en samstämmig slutsats att just ramverket tillför struktur och ordning i projektet. oavsett vilket ramverk man väljer att jobba i.
Nu har jag inte kunskaper nog att jämföra ramverken sida vid sida. Så det får var och en välja själv. Postgre hamnade jag i av en slump, och noterade att en hel del saker som man tar för givet i MySQL inte finns eller fungerar likadant (insert ignore, replace, insert .. on duplicate key update, concat, hur autoincrement fungerar för att nämna några) och då får man skriva om sina frågor. En nyttig upplevelse! Om postgre är bättre eller inte kan jag inte bedöma, det stora problemet för den mindre utvecklaren är väl att andelen webhotell med stöd för postgre är försvinnande litet. |
Citat:
Och då inte som ramverk utan snarare som bibliotek. Använd till exempel bara validerare och filter till formulär, eller view helpers för att formatera utdata. Detta utan att kalla in hela ramverket. Enkelt att implementera, och du får en säker applikation utan att behöva skriva dina egna validerare eller filter. |
Citat:
Jag vill inte ge mig på att argumentera mot RoR. Allt jag hört om RoR tilltalar mig, trevlig syntax, uppstyrd pakethantering med ett brett utbud, mvc etc... Att unit-tester är en norm inom communityt, som någon nämnde här, låter helt fantastikt. Hade jag haft tiden över så hade jag ögonblickligen gett mig på det. All min extra tid går just nu åt nodjs, den som inte hört om det tidigare borde ta sig en titt (verkar vara smått fantastiskt). Citat:
|
Citat:
Citat:
Citat:
|
Alla tider är GMT +2. Klockan är nu 13:56. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson