(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, Autore presso The Codest - Pagina 9 di 13

Introduzione

Per parlare di PackwerkÈ necessario introdurre prima alcuni concetti.

Problemi

Come sappiamo, Rubino non fornisce una buona soluzione per far rispettare i confini del codice. Possiamo specificare la visibilità, ma tutte le dipendenze saranno caricate nello spazio dei nomi globale. Nelle applicazioni grandi o monolitiche, questa mancanza di confini produce i seguenti problemi.

Nel tentativo di modularizzare il monolite di Shopify e di imporre dei confini, hanno provato diverse soluzioni senza ottenere i risultati sperati:
- Impostazione di costanti private,
- Stabilire i confini attraverso le gemme,
- Utilizzare i test per prevenire le associazioni tra componenti,
- Utilizzo della gemma Modulation di Ruby,
- Creare microservizi.

Con tutte le conoscenze acquisite nei precedenti tentativi, hanno deciso di creare il proprio strumento: Packwerk.

Packwerk

Che cos'è il Packwerk?

Packwerk è uno strumento di analisi statica utilizzato per imporre dei confini tra gruppi di Rubino file chiamati pacchetti.

Che cos'è un pacchetto?

A pacchetto è una cartella contenente codice autocaricato. La cartella di Shopify squadra incoraggia a utilizzare le migliori pratiche di progettazione durante la creazione dei pacchetti.
- Dovremmo imballare insieme le cose che hanno un'alta funzionalità coesione,

Tipi di controlli di frontiera

Possiamo imporre confini di privacy e di dipendenza, verificare le violazioni dei confini e le dipendenze cicliche.

Packwerk in pratica

Non esiste un unico modo specifico per strutturare o ri-strutturare l'applicazione durante la creazione dei pacchetti. In questo articolo, seguiremo l'approccio suggerito da
Stephan Hagemann in Modularizzazione graduale per Ruby on Rotaie.

Scegliere il progetto

È possibile creare un nuovo progetto oppure scegliete uno dei vostri progetti. Ho deciso di utilizzare un progetto open-source chiamato CodiceTriage. È importante sottolineare che abbiamo bisogno di un'applicazione Rails 6 poiché Packwerk utilizza Zeitwerk.

Inizializzare Packwerk

Per prima cosa, dobbiamo aggiungere il gem al nostro Gemfile come gemma "packwerk e poi eseguire fagottonella console. Siamo quindi pronti a inizializzare la gemma eseguendo packwerk init.

Successivamente, notiamo che Packwerk ha generato tre file per noi:

packwerk.yml è il file di configurazione di Packwerk dove si definiscono i file inclusi ed esclusi, si elencano i percorsi di caricamento, si definisce il file delle inflessioni e altro ancora;

pacchetto.yml è il file di configurazione di un pacchetto. In questo file, aggiungeremo la configurazione dei confini del nostro pacchetto. Qualsiasi cartella con package.yml sarà riconosciuta come pacchetto da Packwerk. Ecco fatto, Packwerk ha creato il nostro primo
e lo chiamiamo pacchetto radice pacchetto.

inflessioni.yml è il luogo in cui collocheremo le nostre inflessioni e acronimi personalizzati, nel caso in cui li utilizzassimo.

Per ulteriori informazioni sui file e sulla loro configurazione, consultare la sezione
Packwerk.

Proprietà Packwerk

Affinché la modularizzazione funzioni, sono necessarie tre proprietà fondamentali: un contenitore con nome, il suo contenuto, ed esplicita dipendenze su altri contenitori. Definiamo quindi queste proprietà in Packwerk:

Un altro file che non è incluso di default, ma che è consigliato, è README. È importante per fornire informazioni sull'uso del pacchetto.

La fine dell'Episodio I

Consulenza per lo sviluppo di prodotti digitali

Per saperne di più

GraphQL Ruby. E le prestazioni?

Rotaie e altri mezzi di trasporto

Sviluppo di Rails con TMUX, Vim, Fzf + Ripgrep

it_ITItalian