Utveckla i KTH Social på Windows

Det går "utmärkt" att utveckla KTH Social på Windows (t.ex WIKS) men det är inte helt trivialt. Åtskilliga av de ingående komponenterna kommer ifrån Linux-miljö som gör att det är trivialt att komma igång på Linux, och relativt lätt att komma igång på Mac OS X som också har rötter i Unix-världen, Gnu, och *BSD. På Windows är det lite knepigare och man slipper inte undan Unix och kommandorader, utan behöver ganska goda kunskaper om den världen ändå.

Beroenden

Git (Cygwin)

Enklaste sättet att få sig en git, och i realiteten det som officiellt stöds, är att använda Cygwin. Andra "Git på Windows"-varianter är i princip en git i cygwin, fast maskerad på lite olika sätt iaf. Lika bra att gå hard-core och köra Cygwin direkt. Behåll cygwins setup.exe någonstans, det är det programmet man sedan använder för att uppdatera installationen. Installerar du inte allt utan det som är default, behöver du åtminstone installera också git och wget. Det kan också vara idé att installera gitk.

Git flow installeras sedan enligt https://github.com/nvie/gitflow/wiki/Windows, följ receptet för Cygwin.

Får man märkliga länkningsfel i Cygwin kan man behöva länka om saker och ting. Det gör man genom att stänga ner alla Cygwin-processer, sedan öppna ett Command Prompt, gå till Cygwin-installationen och där exkvera ett standalone-skal, ash.exe. I detta ska man sedan exkvera kommandot rebaseall.

I övrigt måste git sättas upp som vanligt med ssh-nycklar, konton i gitolite osv, för att man ska kunna clona social.

Python

Det finns Windows-varianter av python på www.python.org att ladda ner, för närvarande version 2.7.3 (64-bitar). Observera att man inte kan använda den python som ingår i Cygwin.

Till denna behövs Python MySQL och PIL bibliotek, testade versioner som fungerar med python-versionen ovan finns uppladdade här i social.

Dessutom behövs virtualenv. För att bootstrappa en virtualenv på Windows får man ladda ner virtualenv.py och köra den manuellt som

...\python.exe ...\virtualenv.py --system-site-packages virtualenv_katalog

Man måste specificera att site-packages ska med för att inte pip senare själv ska försöka installera dessa (vilket kommer att misslyckas).

Man akitverar sedan sin virtualenv genom att i en Command Prompt exekvera

...\virtualenv_katalog\Scripts\activate

MongoDB

Är bara att ladda ner ifrån www.mongodb.org och installera. Den installerar sig inte som en service, utan man får starta den manuellt i Command Prompt. Man kan antingen använda en konfigurationsfil, eller specificera var mongod.exe ska spara data någonstans direkt på kommandoraden.

MySQL

Är bara att ladda ner ifrån www.mysql.com och installera, den installerar sig som en service och startas som sådana.

Memcached

Kan man antingen klara sig utan, eller så är en av de bättre metoderna att installera Couchbase, ifrån www.couchbase.com, som är en NoSQL-databas med memcached-gränssnitt. Den installerar sig också som en service och startas som en sådan. 

Eclipse

Finns det ett par olika varianter att använda sig av. Antingen använder man Aptana Studio, som paketerar mycket för pythonutveckling och git, eller så laddar man ned en standard Eclipse for Java och installerar de pluginer man vill ha. Vettiga pluginer är PyDEV, Egit, ShellED och jsEclipse, se mer på sidan om Eclipse. Aptana bundlar nog alla utom ShellED och bundlar dessutom ytterligare några pluginer för bla CSS.

Java

Det måste finnas en standard Java i pathen. Den används bara till att generera CSS ifrån less-filerna, vilket görs automatiskt när man kör runserver, men det går inte att klara sig utan den. Sitter man i WIKS-miljö duger den som redan finns.

Utveckling

I övrigt sker utvecklingen som vanligt med pip install, databas ska sättas upp osv. Det blir lite att hålla tungan rätt i mun eftersom en del arbete måste ske i Cygwin, typiskt allt som har med Git att göra och inte kan köras inifrån Eclipse, men ett bash-skal kan vara bra att använda i en del andra sammanhang.

Dock ska all exekvering av python i övrigt inte ske i Cygwin, utan i windows-miljö i Command Prompt. Eclipse PyDEV ska konfigureras att använda den virtualenv du har skapat genom att dess python.exe pekas ut. Sedan kan runserver exekveras inifrån Eclipse och debuggern användas precis som vanligt. Notera att man inte kan exkvera manage.py direkt i Command Prompt som man kan på Linux och som man kan se exempel på i en del tutorials, utan måste köra python och peka ut manage.py explicit, t.ex:

python manage.py runserver

Blandningen av arbete i Command Prompt och i Cygwins bash-skal kan vara lite förvirrande.

Fallerande tester

En handfull tester fallerar på Windows. Det rör bla filsystemrelaterade problem i upload. Något test fallerar pga att ordningen i listor ibland kan bli annorlunda på Windows än i Posix-miljö, det påverkar bla i vilken ordning element kommer i vissa listor.

De flesta av dessa tester är taggade och kan avaktiveras med:

python manage.py test --attr=!does_not_work_on_windows

Feedback News