(function(w,d,s,l,i){w[l]=w[l]|||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.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, Autors pie The Codest - Page 9 of 13

Ievads

Lai runātu par Packwerk, vispirms ir jāiepazīstina ar dažiem jēdzieniem.

Problēmas

Kā zināms, Rubīns nenodrošina labu risinājumu, lai ieviestu kodu robežas. Mēs varam norādīt redzamību, bet visas atkarības tiks ielādētas globālajā vārdu telpā. Lielās vai monolītās lietojumprogrammās šis robežu trūkums rada šādas problēmas.

Mēģinot modulēt Shopify monolītu un ieviest robežas, tika izmēģināti dažādi risinājumi, taču gaidītie rezultāti netika sasniegti:
- Privāto konstantu iestatīšana,
- Robežu noteikšana ar dārgakmeņiem,
- Testu izmantošana, lai novērstu starpkomponentu saistības,
- Izmantojot Ruby modulācijas dārgakmeni,
- Radīt mikroservisi.

Izmantojot visas iepriekšējos mēģinājumos gūtās zināšanas, viņi nolēma izveidot savu rīku: Packwerk.

Packwerk

Kas ir Packwerk?

Packwerk ir statiskās analīzes rīks, ko izmanto, lai ieviestu robežas starp grupu Rubīns failus ar nosaukumu paketes.

Kas ir pakete?

A pakete ir mape, kurā ir automātiski ielādēts kods. Shopify komanda mudina, veidojot paketes, izmantot labāko dizaina praksi.
- Mums vajadzētu iepakot kopā lietas, kurām ir augsta funkcionalitāte kohēzija,

Robežpārbaužu veidi

Mēs varam ieviest privātuma un atkarību robežas, pārbaudīt robežu pārkāpumus un cikliskās atkarības.

Packwerk praksē

Neviens konkrēts veids, kā strukturēt vai pārstrukturēt lietojumprogrammu, veidojot paketes, nav noteikts. Šajā rakstā mēs izmantosim pieeju, ko iesaka
Stephan Hagemann in Pakāpeniska modulēšana Ruby on Sliedes.

Izvēlieties projektu

Varat izveidot jaunu projekts vai izvēlieties kādu no saviem projektiem. Es nolēmu izmantot atvērtā koda projektu ar nosaukumu CodeTriage. Ir svarīgi pieminēt, ka mums ir nepieciešama Rails 6 lietojumprogramma, jo Packwerk izmanto Zeitwerk.

Inicializēt Packwerk

Pirmkārt, mums ir nepieciešams, lai pievienotu gem mūsu Gem failu, piemēram, kā dārgakmens 'packwerk' un pēc tam palaidiet komplektskonsolē. Tad mēs esam gatavi inicializēt gem darbojas packwerk init.

Pēc tam mēs redzam, ka Packwerk ģenerēti trīs faili mums:

packwerk.yml ir konfigurācijas fails Packwerk kur mēs definēsim iekļautos un izslēgtos failus, uzskaitīsim ielādes ceļus, definēsim inflections failu un citas lietas;

package.yml ir paketes konfigurācijas fails. Šajā failā mēs pievienosim mūsu paketes robežu konfigurāciju. Jebkura mape ar package.yml tiks atpazīta kā pakete ar Packwerk. Tas ir viss, Packwerk izveidoja mūsu pirmo
paketi, un mēs to saucam par saknes iepakojums.

inflections.yml ir vieta, kur mēs izvietosim mūsu pielāgotos locījumus un akronīmus, ja mēs tos izmantosim.

Plašāku informāciju par failiem un to konfigurāciju var atrast sadaļā
Packwerk.

Packwerk īpašības

Lai modulācija darbotos, mums ir nepieciešamas trīs pamatīpašības: nosaukts konteiners, tā saturs, un skaidri atkarības par citiem konteineri. Tātad definēsim šīs īpašības Packwerk:

Vēl viens fails, kas nav iekļauts pēc noklusējuma, bet ir ieteicams, ir README. Tajā ir svarīgi sniegt informāciju par paketes lietošanu.

I epizodes beigas

Konsultācijas par digitālo produktu izstrādi

Lasīt vairāk

GraphQL Ruby. Kā ir ar veiktspēju?

Sliedes un citi transporta līdzekļi

Rails attīstība ar TMUX, Vim, Fzf + Ripgrep

lvLatvian