(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5LLHNRP9'); thecodest, Kirjoittaja osoitteessa The Codest - Sivu 9 / 13

Johdanto

Puhuakseni Packwerk, meidän on ensin esiteltävä muutama käsite.

Ongelmat

Kuten tiedämme, Ruby ei tarjoa hyvää ratkaisua koodirajojen valvomiseksi. Voimme määrittää näkyvyyden, mutta kaikki riippuvuudet ladataan globaaliin nimiavaruuteen. Suurissa tai monoliittisissa sovelluksissa tämä rajojen puuttuminen aiheuttaa seuraavia ongelmia.

Yrittäessään modulaarisoida Shopifyn monoliittia ja asettaa rajoja, he kokeilivat erilaisia ratkaisuja saavuttamatta odotettuja tuloksia:
- Yksityisten vakioiden asettaminen,
- Rajojen asettaminen jalokivien avulla,
- Testien avulla estetään komponenttien väliset yhteydet,
- Rubyn modulaatio-jalokiven käyttäminen,
- Luominen mikropalvelut.

Aikaisemmista yrityksistä saadun tiedon avulla he päättivät luoda oman työkalun: Packwerk.

Packwerk

Mikä on Packwerk?

Packwerk on staattinen analyysityökalu, jota käytetään rajaamaan ryhmien välisiä Ruby tiedostot nimeltä paketit.

Mikä on paketti?

A paketti on kansio, joka sisältää automaattisesti ladattua koodia. Shopifyn joukkue kannustaa käyttämään parhaita suunnittelukäytäntöjä paketteja luodessaan.
- Meidän pitäisi pakata yhteen asioita, joilla on korkea toiminnallinen koheesio,

Rajatarkastusten tyypit

Voimme valvoa yksityisyyden suojaa ja riippuvuusrajoja, tarkistaa rajojen rikkomista ja syklisiä riippuvuuksia.

Packwerk käytännössä

Paketteja luotaessa ei ole olemassa yhtä tiettyä tapaa jäsentää tai uudelleen jäsentää sovellusta. Tässä artikkelissa noudatamme lähestymistapaa, jota ehdottaa
Stephan Hagemann vuonna Asteittainen modularisointi Ruby on Kiskot.

Valitse projekti

Voit luoda uuden projekti tai valitse jokin hankkeistasi. Päätin käyttää avoimen lähdekoodin projektia nimeltä CodeTriage. On tärkeää mainita, että tarvitsemme Rails 6 -sovelluksen, koska Packwerk käyttää Zeitwerkia.

Packwerkin alustaminen

Ensin meidän on lisättävä helmi Gemfileen seuraavasti jalokivi 'packwerk' ja aja sitten niputtaakonsolissa. Sitten olemme valmiita alustamaan helmi käynnissä packwerk init.

Tämän jälkeen huomaamme, että Packwerk tuotti kolme tiedostoa us:

packwerk.yml on konfigurointitiedosto Packwerk jossa määritetään mukaan otetut ja pois jätetyt tiedostot, luetellaan latauspolut, määritellään taivutustiedosto ja muita asioita;

package.yml on paketin asetustiedosto. Tässä tiedostossa lisäämme pakettimme rajoja koskevat asetukset. Mikä tahansa kansio, jossa on package.yml, tunnistetaan paketiksi seuraavasti Packwerk. Siinä kaikki, Packwerk loi ensimmäisen
paketti ja kutsumme sitä root paketti.

taivutukset.yml on paikka, johon sijoitamme mukautetut taivutukset ja lyhenteet, jos käytämme niitä.

Lisätietoa tiedostoista ja niiden konfiguraatiosta on osoitteessa
Packwerk.

Packwerk ominaisuudet

Jotta modularisointi toimisi, tarvitsemme kolme perusominaisuutta: nimetty säiliö, sen sisältöja nimenomaisesti riippuvuudet muista säiliöt. Määritellään siis nämä ominaisuudet Packwerk:

Toinen tiedosto, jota ei sisällytetä oletusarvoisesti, mutta jota suositellaan, on README. Siinä on tärkeää antaa tietoa paketin käytöstä.

Jakson I loppu

Digitaalisen tuotekehityksen konsultointi

Lue lisää

GraphQL Ruby. Entä suorituskyky?

Kiskot ja muut liikennevälineet

Rails-kehitys TMUX, Vim, Fzf + Ripgrep -ohjelmilla

fiFinnish