calmdevelopment / obi-wan-kinobi

Filmpflege dingens für kleine Programmkinos
0 stars 0 forks source link

= Obi-Wan Kinobi

image:https://travis-ci.org/calmdevelopment/obi-wan-kinobi.svg?branch=master["Build Status", link="https://travis-ci.org/calmdevelopment/obi-wan-kinobi"]

Ein einfaches Filmpflege dingens für kleine Programmkinos.

== Setup für Entwickler

composer install
yarn

Kopiere .env.example zu .env.

Passe dort die Einstellungen für die Datenbank an.

Wer die Anwendung lieber in Docker-Containern ausführen will, schaue sich https://laradock.io/introduction/[laradock] an.

Dies sind die in .env zu ändernden Standardeinstellungen für die Datenbank:

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

Generiere einen Schlüssel für Sessions und Verschlüsselung (wird in die .env Datei geschrieben)

php artisan key:generate

Lege die nötigen Datenbanktabellen an:

php artisan migrate

Um Deine Installation zu testen, starte php artisan serve und rufe http://localhost:8000 im Browser auf.

== Tools

=== Aufräum Script

Folgendes Script führt untenstehende cs-fixer und ide-helper tasks aus:

./cleanup.sh

==== CS Fixer

Um Code Style Fixes für die php Dateien durchzuführen:

vendor/bin/php-cs-fixer fix

==== IDE Helper generieren

Um Deine IDE zu unterstützen, die fortgeschrittenen Aspekte von laravel zu verstehen, lass folgende Scripte laufen, nachdem Du Deine Eloquent Models verändert hast:

./artisan clear-compiled && ./artisan ide-helper:generate && ./artisan ide-helper:models --write && ./artisan ide-helper:meta

== Testing

=== Initiales Setup

Tests laufen aktuell über eine in memory sqlite DB – aus Performancegründen und damit die Tests nicht die lokale DB überschreiben.

Sollten sich dabei aufgrund von Inkompatibilitäten Schwierigkeiten ergeben, lässt sich das Testing auch auf einer zweiten mysql DB durchführen, was in phpunit.xml / phpunit.xml.dist angepasst werden kann.

=== Testing und Konfiguration

vendor/bin/phpunit

Die Konfiguration ist in phpunit.xml.dist hinterlegt. Individuelle Konfiguration und Secrets können in einer phpunit.xml abgelegt werden (z.B. als Kopie von phpunit.xml.dist). Phpunit bevorzugt phpunit.xml und lädt phpunit.xml.dist nur, wenn keine phpunit.xml vorhanden ist.

phpunit.xml ist mittels .gitignore von der Versionskontrolle ausgeschlossen.

File-Storage für Tests ist in phpunit.xml.dist bzw. config/filesystems.php so konfiguriert, dass er nicht mit dem normalen File-Storage kollidiert -> storage/framework/testing/disks/testing.

== Konzepte

Artikel (Article) sind keine Eloquent Models. Sie haben keine Entsprechung in der Datenbank, sondern werden von Flatfiles geladen und in Flatfiles persistiert.

Änderungen werden erst nach Aufruf der Methode $article->save() persistiert. Wird der path eines Articles verändert, wird auch das Flatfile verschoben.