(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-5LHNRP9'); thecodest, autor aadressil The Codest - Page 9 of 13

Sissejuhatus

Selleks, et rääkida Packwerk, peame kõigepealt tutvustama mõned mõisted.

Probleemid

Nagu me teame, Ruby ei paku head lahendust koodide piiride jõustamiseks. Me võime määrata nähtavuse, kuid kõik sõltuvused laaditakse globaalsesse nimeruumi. Suurtes või monoliitrakendustes tekitab selline piiride puudumine järgmised probleemid.

Püüdes Shopify monoliiti moduleerida ja piire kehtestada, proovisid nad erinevaid lahendusi, saavutamata oodatud tulemusi:
- Privaatsete konstantide seadistamine,
- Piiride kehtestamine läbi kalliskivide,
- Testide kasutamine komponentide vaheliste seoste vältimiseks,
- Kasutades Ruby's Modulation gem,
- Loomine mikroteenused.

Võttes arvesse kõiki varasematest katsetest saadud teadmisi, otsustasid nad luua omaenda tööriista: Packwerk.

Packwerk

Mis on Packwerk?

Packwerk on staatilise analüüsi vahend, mida kasutatakse piiride kehtestamiseks rühmade vaheliste Ruby failid nimega paketid.

Mis on pakett?

A pakett on kaust, mis sisaldab autoloaded koodi. Shopify meeskond julgustab kasutama pakettide loomisel parimaid projekteerimistavasid.
- Me peaksime pakkima kokku asju, millel on kõrge funktsionaalne ühtekuuluvus,

Piirikontrolli liigid

Me saame kehtestada privaatsuse ja sõltuvuse piirid, kontrollida piiride rikkumisi ja tsüklilisi sõltuvusi.

Packwerk praktikasse

Pakettide loomisel ei ole ühte kindlat viisi, kuidas oma rakendust struktureerida või ümber struktureerida. Selles artiklis järgime lähenemisviisi, mida soovitab
Stephan Hagemann aastal Ruby on Ruby järkjärguline modulariseerimine Rööpad.

Valige projekt

Saate luua uue projekt või valige üks oma projektidest. Otsustasin kasutada avatud lähtekoodiga projekti nimega CodeTriage. Oluline on mainida, et me vajame Rails 6 rakendust, kuna Packwerk kasutab Zeitwerki.

Packwerki initsialiseerimine

Kõigepealt peame lisama gemi meie Gemfile'ile nagu kalliskivi 'packwerk' ja seejärel käivitage kimpkonsoolis. Siis oleme valmis initsialiseerida pärl töötab packwerk init.

Pärast seda märkame, et Packwerk genereeris kolm faili us:

packwerk.yml on konfiguratsioonifaili Packwerk kus me määratleme kaasatud ja välistatud failid, loetleme laadimisrajad, määratleme muuhulgas ka inflections faili;

package.yml on paketi konfiguratsioonifail. Selles failis lisame meie paketi piiride konfiguratsiooni. Iga kausta, mille package.yml on olemas, tunnistab paketiks Packwerk. See on kõik, Packwerk lõime meie esimese
pakett ja me nimetame seda juur pakett.

inflections.yml on koht, kuhu me paigutame oma kohandatud käänded ja akronüümid, kui me neid kasutame.

Lisateavet failide ja nende konfiguratsiooni kohta leiate aadressilt
Packwerk.

Packwerk omadused

Modulariseerimise toimimiseks on vaja kolme põhiomadust: nimega konteiner, selle sisuja selgesõnaline sõltuvused muudel konteinerid. Nii et defineerime need omadused Packwerk:

Teine fail, mis ei ole vaikimisi lisatud, kuid on soovitatav, on README. See on oluline, et anda teavet paketi kasutamise kohta.

I episoodi lõpp

Digitaalse tootearenduse nõustamine

Loe edasi

GraphQL Ruby. Kuidas on tulemuslikkus?

Rööpad ja muud transpordivahendid

Railsi arendamine TMUX, Vim, Fzf + Ripgrep abil

etEstonian