-
Notifications
You must be signed in to change notification settings - Fork 2
Sätta upp en lokal testmiljö
- Rubyinstaller - Jag använde 2.6.6 på Windows
- PostgreSQL - alla nyare versioner borde fungera
- Node.js - behövs för vissa gems ska fungera (lokalt?)
Om du använder en annan version av Ruby än 2.5.3 (som är nuvarande versionen i prod) kommer du behöva ändra några filer lite senare.
När du sätter upp PostgreSQL se till att SPARA LÖSENORDET DU ANGER. Du kommer behöva det senare.
Troligvis har du redan git men annars måste det installeras då ett gem som är specificerat i Gemfile
klonar ett GitHub repo.
Om du jobbar på windows se till att Ruby, PostgreSQL samt Node ligger på PATH. Annars kommer vissa kommandon inte fungera.
Anledningen till att jag använde Ruby 2.6.6 är mest för att 2.5.3 som körs i Prod inte har kunnat installera rails vilket gör det svårt att jobba med. Om du lyckas installera Ruby 2.5.3 och sedan köra gem install rails -v 5.2
utan problem kan nog många av stegen skippas, i teorin borde det räcka att köra setupfilen efter att ha gjort ändringarna som nämns i den sektionen. Har själv inte kunnat testa detta men troligen skulle det fungera utan de mesta av ändringarna som krävs p.g.a. nyare versioner av alla gems.
Kör gem install rails -v 5.2
. Detta installerar den version av rails som används i prod.
Kör sedan gem install bundler --conservative
.
Använd godtyckligt sätt för att klona repot
https://github.com/Fysikteknologsektionen/sektionsmote
till någon lättåtkomlig plats.
Från och med nu så vill du jobba i mappen som du klonade.
Kontrollera din version med ruby -v
Här kommer några ändringar jag har behövt göra för att göra allting kompatibelt med Ruby 2.6.6. Det är möjligt att vissa av dessa ändringar behövs även för 2.5.3 och att vissa skulle kunna skippas men för stunden så funkar detta.
Om du har en annan version av Ruby än 2.5.3 måste du ändra i några filer för att kunna köra servern.
- Ändra i
.ruby-version
så det står rätt version, bara nummren. - Ändra i
Gemfile
ruby '2.5.3'
till din version av ruby. - Ändra i
.circleci/config.yml
till din version av ruby.
Därför måste man explicit specificera att man ska installera de äldre versionerna då några få nya versioner har ändrat om saker som gör att det inte längre fungerar på det gamla sättet. Allt som behövs ändras i Gemfile
är att specificera vilka versioner du vill använda.
Det jag har ändrat för att få det att fungera med Ruby 2.6.6 är:
-
gem 'pg', '~> 1.2.3'
detta då du annars kommer installera en version avpg
som inte stödjs av Ruby 2.6.x eller högre. (pg
är det gem som jobbar med PostgreSQL databasen, viktigt att det fungerar) gem 'sass-rails', '~> 5.0.7'
En bra gem att ha för viss databasrelaterad-debugging kan vara
gem 'tzinfo-data'
Ta sedan bort filen Gemfile.lock
och kör sedan bundle install
för att installera alla gems och generera en ny Gemfile.lock
.
I mappen spec/factories
finns det massa olika mallar för databasstrukturen. I dessa finns det några defaultvärden som anges, detta måste ändras och lägga till {}
runt p.g.a. en ny version av något gem (Inte hittat vilket ännu).
adjustments.rb
ändra till
presence { true }
users.rb
ändra till
password {'12345678'}
role {:user}
role {:admin}
confirmed_at {nil}
confirmation_token {'confirmmyaccount'}
reset_password_token {'resetmypassword'}
vote_options.rb
ändra till
count {0}
votes.rb
ändra till
status {:future}
choices {1}
Så av någon anledning kommer det behövas en fil app/assets/images/favicon/manifest.json
. Denna kan vara helt tom och spelar ingen roll för webbsidans funktionalitet men den måste existera annars startar inte sidan. Gör bara en tom fil och placera den där.
Nedan är de ändringar som krävs för att kunna köra webbsidan lokalt istället för på prod.
Det finns en fil config/database.yml
i den, under default, ändra så den får detta utseende:
default: &default
adapter: postgresql
encoding: unicode
host: localhost #Om databasen är lokalt hostad
username: [USERNAME]
password: [PASSWORD]
pool: 5
Användarnamnet och lösenordet är de till din databas. Använder du din lokala installation av PostgreSQL borde användarnamnet vara postgres
och lösenordet det du angav vid installationen.
Eftersom testerna förmodligen gjordes innan begränsningen till chalmersmailer infördes måste det ändras.
I filen lib/tasks/dev_data.rake
ändra mailaddresserna så de slutar i antingen @student.chalmers.se
eller @chalmers.se
.
Inga mail kommer skickas dit så det spelar ingen roll vad som skrivs in.
Lite beroende på hur rails är installerat på just din dator kan detta steget variera lite. Kolla upp om rails ligger i PATH
eller i PATH/bin
. Rails kommer ligga i samma mapp som din Ruby installation så om du satte din PATH
direkt till ruby borde du ändra lite i filen bin/setup.rb
.
Ändra i så fall alla bin/rails
till bara rails
Är du osäker på detta steget skriv rails -v
i konsolen. Fungerar kommandot gör du ändringen.
Om allting har gått rätt så borde du nu kunna köra rails server
från mappen sektionsmote
(eller någonstans i den) och servern borde startas!
Du kan då hitta den på localhost:3000
i din webbläsare.
Notera att du ännu inte kan skicka mail, det måste man konfigurera lite extra.
Det finns två sätt att testa mail egentligen, om du vill testa att bara mail fungerar och om du vill testa att skicka mail från rätt address. Om du bara vill testa att det fungerar att skicka mail behöver du bara installera ett extra gem.
För att testa och skicka mail används Mailcatcher vilket är ett gem som fångar upp utgående mail på en ip med en viss port. Följ instruktionerna på webbsidan för att sätta upp det och sätt inte mailcatcher i Gemfile då det kan störa andra gems. Steg 1-3 visar vad du ska göra, steg 4 görs redan. Testa sedan att skapa ett konto, mailcatcher borde fånga upp bekräftelsemailet.
Kopiera koden längst ner från filen config/environments/production.db
till config/environments/development.db
(kopiera rad 97 till 115 och ersätt raderna 68 till 72) och byt ut ENV['APPLICATION_URL]
mot localhost:3000
samt ENV['FTEK_USERNAME']
och ENV['FTEK_PASSWORD']
mot den email du vill skicka från och dess lösenord. För att detta ska fungera måste "Allow less secure apps" vara påslaget i googlekontots inställningar. Var försiktig med hanteringen av lösenord här.
Nu borde allting fungera, vissa saker kanske ser lite annorlunda ut beroende på vilken version av Ruby du använder eller vilket operativsystem du kör.
Eftersom man förmodligen någon gång under sin setup tar bort filen Gemfile.lock
som låser versionen av alla gems till den som är i prod kommer din lokala installtion förmodligen använda sig av nyare gems än de som används i prod. Detta är nog varför man måste göra dessa lite olika småändringarna på olika ställen för att få servern att fungera.
Jag ska se om man kan installera samma version av alla gems som används på ett bra sätt, går ganska lätt att bara tvinga alla gems att vara en version i Gemfile
men går nog att göra det på ett lite lättare sätt.