Sugeruję zainstalowanie Ruby przez rbenv - Ruby Version Manager.
$ rbenv install 3.4.8
$ rbenv local 3.4.8Polecam przeczytać:
- rbenv Basic Git Checkout Uwaga: nie instalujcie rbenv przez apta! Zainstalujcie przy pomocy skryptu z Gita!
- rbenv Installing Ruby Versions - instalowanie Ruby nie jest domyślnie wspierane w rbenv, więc potrzebny jest do tego plugin.
Aplikacja korzysta z paczek javascriptowych z NPM.
Sugeruję zainstalowanie przy pomocy nvm - Node Version Manager.
Polecam przeczytać:
Nasza baza danych.
Tu jest poradnik jak to skonfigurować na ubuntu: Install and configure PostgreSQL
W pliku config/database.yml w developmencie oraz w testach przewiduję, że nazwa użytkownika będzie postgres, a hasło puste.
Jeżeli u Was to się będzie różnić to się zamieni plik database.yml na database.yml.example i wtedy sami sobie to doprecyzujecie.
Jest to program który pozwala na uruchomienie wielu procesów zdefiniowanych w pliku Procfile.dev.
Instalujemy poprzez:
# Uwaga - nie jest to zależność aplikacji, dlatego tak, a nie w Gemfile
$ gem install overmindJeżeli posiadasz powyższe zależności to możesz przejść do pierwszego uruchomienia appki.
Wywołaj:
$ bin/setup [--reset] [--skip-server]Skrypt ten:
- Zainstaluje zależności Ruby zdefiniowane w
Gemfile. - Zainstaluje zależności JavaScript i CSS zdefiniowane w
package.json - Przygotuje bazę danych - utworzy bazy oraz puści utworzone w międzyczasie migracje. Jeżeli wywołane z
--resetto od razu wykonuje reset bazy oraz ponownie uruchamia seedy. - Wyczyści logi
- Uruchomi aplikację o ile nie podaliśmy flagi
--skip-server
Tyle jeżeli chodzi o setup.
Żeby uruchomić aplikację użyj:
$ overmind startovermind skorzysta ze zmiennych środowiskowych z pliku .overmind.env i uruchomi procesy z Procfile.dev
Bez konfiguracji dostępne jest tylko logowanie przez email. Dostępne jest 27 testowych kont - 20 studenckich, 5 nauczycielskich, 1 admin organizacji i 1 admin globalny.
jan.nowak@example.com |
jacek.kowalski@example.com |
monika.szczepaniak@example.com |
filip.jaskolka@example.com |
julia.kaznodzieja@example.com |
anna.wisniewska@example.com |
piotr.zielinski@example.com |
katarzyna.wozniak@example.com |
marek.lewandowski@example.com |
magdalena.dabrowska@example.com |
tomasz.mazur@example.com |
agnieszka.kwiatkowska@example.com |
lukasz.krawczyk@example.com |
barbara.kaczmarek@example.com |
marcin.stepien@example.com |
weronika.wojcik@example.com |
michal.pajak@example.com |
karolina.duda@example.com |
krzysztof.adamczyk@example.com |
tomasz.nowakowski@example.com |
barbara.kowalczyk@example.com |
andrzej.wozniak@example.com |
elzbieta.mazur@example.com |
mariusz.kaczmarek@example.com |
| Typ | |
|---|---|
pawel.wisniewski@example.com |
organizacja |
malgorzata.lewandowska@example.com |
globalny |
Na środowisku developmenckim emaila są wysyłane na testową skrzynkę pocztową. Przy logowaniu należy kliknąć w potwierdzający Magic Link. Na WSL istnieje problem przez który wysłane linki nie otwierają się automatycznie. Dlatego po próbie zalogowania się należy wejść na ścieżkę: http://localhost:3000/letter_opener , aby przejrzeć skrzynkę pocztową.
Podstawa konfiguracja zawiera:
- jedną grupę fabularną
- rangi
- odznaki
- przedmioty
- dwa szablony grup aktywności
- dwóch nauczycieli wspomagających
- jedenastu studentów
Właścicielem grupy fabularnej jest tomasz.nowakowski@example.com.
Nauczycielami w grupie są:
barbara.kowalczyk@example.comandrzej.wozniak@example.comStudentami w grupie są:jan.nowak@example.comjacek.kowalski@example.commonika.szczepaniak@example.comfilip.jaskolka@example.comjulia.kaznodzieja@example.comanna.wisniewska@example.compiotr.zielinski@example.comkatarzyna.wozniak@example.commarek.lewandowski@example.commariusz.kaczmarek@example.commagdalena.dabrowska@example.comtomasz.mazur@example.comagnieszka.kwiatkowska@example.comlukasz.krawczyk@example.combarbara.kaczmarek@example.com
Credentiale służą do tego, aby w bezpieczny sposób przechowywać ukryte dane w formacie YAML w plikach konfiguracyjnych. Wszystkie wrażliwe dane, klucze itd. zarówno testowe jak i produkcyjne powinny właśnie tam być umieszczane.
W repo istnieją pliki credentials/<env>.yml.enc.example. Należy je skopiować (albo zrobi to skrypt bin/setup) i edytować w nich dane jeżeli będzie taka potrzeba.
Jeżeli w Waszym featurze zostaną dodane nowe dane do plików credentials to proszę o aktualizowanie plików .example o jakieś domyślne wartości. Nie commitujcie faktycznych kluczy API itp. do repo.
Aby edytować credentiale należy wklepać:
$ EDITOR="<nazwa-edytora>" bin/rails credentials:edit --environment <nazwa-środowiska>Przykłady:
# musi być z flagą --wait, aby VSCode czekał aż sami zamkniemy edytowany plik
$ EDITOR="code --wait" bin/rails credentials:edit --environment developmentlub
$ EDITOR="nvim" bin/rails credentials:edit --environment testŚwieżo po postawieniu aplikacji nie będzie mogli skorzystać z logowania przez usos. Musicie do credentiali dopisać:
usos_uam:
consumer_key: ...
consumer_secret: ...
base_url: https://usosapps.amu.edu.pl
callback_url: http://localhost:3000/auth/uam_usos/callbackPonieważ kluczy i secretsów nie trzymamy w repo to piszcie do Jeremiego, aby Wam wysłał :)
Testy są pisane w railsowych minitestach. Można uruchomić je wszystkie skryptem:
$ bundle exec rails tlub po po prostu
$ rails tOgólnie to bundle exec jest raczej rekomendowane, ponieważ wtedy wywołane przez nas skrypty zawsze są uruchamiane w kontekście projektu, a nie w kontekście globalnym.
Pojedyncze testy można uruchomić mając rozszerzenie Ruby LSP do VSCode:
Niestety nie wiem jak w Neovimie to zrobić, @ewez43 możesz sobie dopisać jak będziesz wiedziała :D
Uwaga! Jeszcze niedodane! Testy Playwright dodam nam i skonfiguruję jak będziemy zaczynać stylizować naszą appkę.
Testy end to end pisane są w Playwright. Można go uruchomić skryptem:
$ bin/playwrightW projekcie skonfigurowane są lintery do Ruby oraz JavaScript/TypeScript:
Postarałem się o to, abyście mieli już gotowe automatyczne formatowanie, ale prawdopodobnie będziecie musieli trochę rzeczy dokonfigurować.
Na pewno potrzebujecie rozszerzeń:
Zasady zdefiniowane są w .rubocop.yml
Możecie w konsoli sprawdzić ile naruszeń jest w naszej aplikacji:
bundle exec rubocopJeżeli chcecie automatycznie poprawiać błędy to musi być z flagą -A:
bundle exec rubocop -AZasady zdefiniowane są w eslint.config.mjs.
TBD - jeszcze nie robiliśmy
