Fejlesztői tudnivalók

Bertalan Fodor edited this page Dec 30, 2015 · 30 revisions

Fejlesztőkörnyezet telepítése

A legegyszerűbb a Laravel Homesteadet használni, így nem kell a gépedre PHP-t, MySqlt, webszervert telepíteni, hamem egy virtuális gépet rakunk fel, ami minden szükséges alkalmazást tartalmaz, megfelelően konfigurálva. A telepítés menete:

  • Vagrant telepítése https://www.vagrantup.com/downloads.html
  • Git telepítése és beállítása. (Windows: git for windows)
  • Szedd le valahová a Homestead-et, git clone https://github.com/laravel/homestead.git Homestead
  • A Vagrantfile.sample fájlt másold le Vagrantfile néven és a confDir-t állítsd be az előző lépésben létrehozott könyvtárba
  • Szedd le valahová a forráskódot, git clone https://github.com/borazslo/szentiras.hu.git
  • A Homestead.yaml.sample file-t másold le Homestead.yaml néven és állítsd be a folder mappinget, hogy a virtuális gépen létrehozott könyvtár megfeleljen a saját gépeden lévő könyvtárnak
  • állítsd be a host fájlodba, hogy 127.0.0.1 dev.szentiras.hu
  • vagrant up

Ezzel létrejön egy virtuális gép, amin minden szükséges dolog telepítve van és egy csökkentett tartalmú tesztadatbázis.

  • Adatbázis feltöltése fordításokkal / versekkel helyi fájlból: A virtuális gépre belépve (vagrant ssh, cd szentiras-hu): php artisan szentiras:updateTexts {fordítás rövidítése} --file="{szövegforrás xls/xlsx/xlsm fájl elérési útja}" --nohunspell
    vagy közvetlenül a központi dropbox fájlból (pontos url-ért keress meg): php artisan szentiras:updateTexts {fordítás rövidítése} --url="{szövegforrás xls/xlsx/xlsm fájl dropbox elérhetősége}?raw=1" --nohunspell

Javasolt IDE

Néhány vegyes gondolat

  • continuous deployment van, azaz:
    • push után a travis-mc.org/borazslo/szentiras.hu
      • letölti a függőségeket
      • létrehozza az adatbázist
      • lefuttatja a séma manipuláló migrationöket és a data seedert (ami a tesztadatokat tölti be)
      • lefuttatja a teszteket
      • sikeres tesztek esetén felpusholja a staging environmentbe az aktuális állapotot
    • a master branch kerül ki a staging környezetbe (staging.szentiras.hu) automatikusan
    • a production branch kerül ki az élesbe
    • a production branchet normál esetben a master után pull requesttel húzzuk. A pull requestet a travis lefordítja, leteszteli, és ha zöld, akkor a pull request merge-ölése után megint travis, és az feltolja élesbe
    • van egy git hook, ami push után
      • leállítja a webkiszolgálót
      • átáll az új kódra
      • letölti a függőségeket
      • lefuttatja a migrationöket (a seedert nem, hiszen azok csak az integrációs tesztek adatai)
      • elindítja a webkiszolgálót
  • fontos, hogy az adatbázisséma minden módosítása migration legyen
    • feltöltés előtt tesztelni kell, ehhez --env=testing beállításnál használható a migration:refresh (ami az összes saját táblát eldobja és újrahúzza)
    • a data seederben csak az integrációs tesztek adatai vannak, a sémaváltozással összefüggő default adatbetöltés, legacy migráció stb. helye a migrationökben van (bármit is mond a laravelbook.com meg mások), hiszen azok az adatok abszolút függenek az aktuális sémaverziótól.
  • A tesztelésről
    • a célunk, hogy minél többen kapcsolódjanak be a fejlesztésbe
    • egy ilyen open source projektnél különösen fontos, hogy sok automatizált teszt legyen
      • unit testek: live függőségek nélkül, minden service-t (adatbázis, mailer, dropbox etc.) mockolva
      • integrációs tesztek: előre vagy a teszt közben bekonfigurált teszt-service-ekkel
      • funkcionális tesztek: Selenium
  • Code review
    • fontos, hogy jó minőségű kód kerüljön be, DRY, SOLID, KISS
  • Code conventions, practices
    • PSR-1 és PSR-2
    • dependency injection (a tesztelés segítésére)
  • Angol kód, kommentek, commit üzenetek
    • angol nyelven csinálunk mindent, aminek köze van a kódhoz, erre volt már szükség pl. amikor az egyik library-be bug reportot küldtünk és a kijavításhoz a fejlesztőnek rá kellett nézni a mi kódunkra

Hyper-V és Vagrant Windows 10-en

Ha szeretnél Windows Mobile applikációt is fejleszteni és emelett Laravel Homesteadet is használni, kell egy kis kavarás, mivel a Hyper-V és a VirtualBox ütik egymást.

A Laravel Homestead egyelőre nem támogatja a hyperv-t, ezért a következők a teendők:

  • https://code.johnpbloch.com/2015/07/laravel-homestead-on-hyperv/
  • Hyper-V managerben kell egy új Internal switch
  • a Windows Settings > Network & Sharing Centerben az internetkapcsolatot meg kell osztani az imént létrehozott virtuális kapcsolattal (ettől lesz majd a Hyper-V-s gépünknek IP-címe)
  • a Homestead.rb fájlt át kell írni, hogy a virtuális gép által látott IP-címmel próbálja a megosztott könyvtárt megosztani:
    • blabla
    • config.vm.synced_folder ... blabla ... smb_host: "a te hosztneved", **options
    • config.vm.synced_folder '.', '/home/vagrant', disabled: true