The Codest
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Odvětví
    • Fintech a bankovnictví
    • E-commerce
    • Adtech
    • Healthtech
    • Výroba
    • Logistika
    • Automobilový průmysl
    • IOT
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
  • O nás
  • Služby
    • Vývoj softwaru
      • Vývoj frontendů
      • Vývoj backendu
    • Staff Augmentation
      • Vývojáři frontendů
      • Vývojáři backendu
      • Datoví inženýři
      • Cloudoví inženýři
      • Inženýři QA
      • Další
    • To Advisory
      • Audit a poradenství
  • Hodnota za
    • CEO
    • CTO
    • Manažer dodávek
  • Náš tým
  • Case Studies
  • Vědět jak
    • Blog
    • Setkání
    • Webové semináře
    • Zdroje
Kariéra Spojte se s námi
Šipka zpět ZPĚT
2022-01-05
Vývoj softwaru

Modularizace Ruby on Rails pomocí Packwerk Episode I

Nicolas Nisoria

Pro lidi je obtížné vidět celkový obraz problému, aniž by mu věnovali mnoho času a úsilí. To se stává zejména při práci s rozsáhlými a složitými aplikacemi. Jaké jsou vedlejší účinky mých změn? Proč tento řádek zde ovlivňuje testy vzdálené části kódové základny? Dokonalé nebo úplné řešení neexistuje, ale Shopify přišlo s nástrojem, který vám a vašemu týmu pravděpodobně pomůže.

Úvod

Aby bylo možné mluvit o Packwerk, musíme si nejprve představit několik pojmů.

  • Soudržnost: označuje míru toho, jak moc k sobě prvky modulu nebo třídy patří.
  • Spojka: označuje úroveň závislosti mezi moduly nebo třídami.
  • Hranice: se týká bariér mezi kód. V tomto případě se hranice kódu vztahuje k různým oblastem zájmu v rámci stejné kódové základny.
  • Modularizace: proces rozdělení softwarového systému na více samostatných modulů, kde každý modul pracuje nezávisle.

Problémy

Jak víme, Ruby neposkytuje dobré řešení pro vynucení hranic kódu. Můžeme určit viditelnost, ale všechny závislosti budou načteny do globálního jmenného prostoru. Ve velkých nebo monolitických aplikacích způsobuje tato absence hranic následující problémy.

  • Nízká soudržnost,
  • Vysoký spoj,
  • Špagetový kód.

Ve snaze modulovat monolit společnosti Shopify a prosadit hranice vyzkoušeli různá řešení, aniž by dosáhli očekávaných výsledků:
- Nastavení soukromých konstant,
- Stanovení hranic pomocí drahokamů,
- Použití testů k prevenci asociací mezi jednotlivými složkami,
- Použití modulačního drahokamu Ruby,
- Vytváření mikroslužby.

S využitím všech znalostí z předchozích pokusů se rozhodli vytvořit vlastní nástroj: Packwerk.

Packwerk

Co je Packwerk?

Packwerk je nástroj statické analýzy, který slouží k vynucení hranic mezi skupinami dat. Ruby soubory s názvem balíčky.

Co je to balíček?

A balíček je složka obsahující automaticky spouštěný kód. Shopify tým vyzývá k používání osvědčených postupů při vytváření balíčků.
- Měli bychom společně balit věci, které mají vysokou funkčnost soudržnost,

  • Balíčky by měly být mezi sebou relativně volně provázány.

Typy hraničních kontrol

Můžeme vynucovat hranice soukromí a závislostí, kontrolovat jejich porušení a cyklické závislosti.

Packwerk do praxe

Neexistuje jediný konkrétní způsob, jak při vytváření balíčků strukturovat nebo změnit strukturu aplikace. V tomto článku se budeme řídit přístupem, který navrhuje
Stephan Hagemann v Postupná modularizace pro Ruby on Rails.

Výběr projektu

Můžete vytvořit nový projekt nebo si vyberte jeden ze svých projektů. Rozhodl jsem se použít open-source projekt s názvem CodeTriage. Je důležité zmínit, že potřebujeme Rails 6 aplikace od Packwerk používá Zeitwerk.

Inicializace systému Packwerk

Nejdříve musíme přidat gem do našeho souboru Gemfile, jako například gem 'packwerk' a pak spusťte svazekv konzole. Pak jsme připraveni inicializovat klenot, který běží packwerk init.

Poté si všimneme, že Packwerk vygeneroval tři soubory pro nás:

  • packwerk.yml

  • package.yml

  • inflections.yml

packwerk.yml je konfigurační soubor Packwerk kde mimo jiné definujeme zahrnuté a vyloučené soubory, uvedeme cesty pro načítání a definujeme skloňovací soubor;

package.yml je konfigurační soubor balíčku. V tomto souboru přidáme konfiguraci pro hranice našeho balíčku. Jakákoli složka se souborem package.yml bude rozpoznána jako balíček pomocí nástroje Packwerk. To je vše, Packwerk vytvořil náš první
a nazýváme jej root balíček.

inflections.yml je místo, kam umístíme naše vlastní skloňování a zkratky, pokud je budeme používat.

Více informací o souborech a jejich konfiguraci najdete v části
Packwerk.

Vlastnosti Packwerk

Aby modularizace fungovala, potřebujeme tři základní vlastnosti: pojmenovaný kontejner, jeho obsaha výslovně závislosti na jiných kontejnery. Definujme tedy tyto vlastnosti v Packwerk:

  • Název: Název balíčku je jeho relativní cesta od kořene adresáře.
    aplikace.

  • Obsah: Když umístíme soubor package.yml do složky, všechny soubory v této složce jsou nyní obsahem balíčku.

  • Závislosti: Můžeme definovat závislosti na jiných balíčcích přidáním klíče závislostí do pole package.yml.

Dalším souborem, který není ve výchozím nastavení zahrnut, ale doporučuje se, je README. Je důležité, aby poskytoval informace o použití balíčku.

Konec epizody I

Poradenství v oblasti vývoje digitálních produktů

Přečtěte si více

GraphQL Ruby. Jak je to s výkonem?

Kolejnice a další dopravní prostředky

Vývoj Rails pomocí TMUX, Vim, Fzf + Ripgrep

Související články

Ilustrace zdravotnické aplikace pro chytré telefony s ikonou srdce a rostoucím zdravotním grafem, označená logem The Codest, která představuje digitální zdraví a řešení HealthTech.
Vývoj softwaru

Softwarové vybavení pro zdravotnictví: a případy použití

Nástroje, na které se dnes zdravotnické organizace spoléhají, se v ničem nepodobají papírovým kartám z doby před desítkami let. zdravotnický software dnes podporuje zdravotnické systémy, péči o pacienty a moderní poskytování zdravotní péče v klinických a...

NEJKRÁSNĚJŠÍ
Abstraktní ilustrace klesajícího sloupcového grafu se stoupající šipkou a zlatou mincí symbolizující efektivitu nákladů nebo úspory. V levém horním rohu se zobrazuje logo The Codest se sloganem "In Code We Trust" na světle šedém pozadí.
Vývoj softwaru

Jak rozšířit tým vývojářů bez ztráty kvality produktu

Zvětšujete svůj vývojový tým? Zjistěte, jak růst, aniž byste museli obětovat kvalitu produktu. Tento průvodce se zabývá příznaky, že je čas na škálování, strukturou týmu, najímáním zaměstnanců, vedením a nástroji - a také tím, jak může The Codest...

NEJKRÁSNĚJŠÍ
Vývoj softwaru

Vytváření webových aplikací odolných vůči budoucnosti: postřehy týmu odborníků The Codest

Zjistěte, jak společnost The Codest vyniká při vytváření škálovatelných, interaktivních webových aplikací pomocí nejmodernějších technologií, které poskytují bezproblémové uživatelské prostředí na všech platformách. Zjistěte, jak naše odborné znalosti podporují digitální transformaci a obchodní...

NEJKRÁSNĚJŠÍ
Vývoj softwaru

10 nejlepších lotyšských společností zabývajících se vývojem softwaru

V našem nejnovějším článku se dozvíte o nejlepších lotyšských společnostech zabývajících se vývojem softwaru a jejich inovativních řešeních. Zjistěte, jak mohou tito technologičtí lídři pomoci pozvednout vaše podnikání.

thecodest
Podniková a škálovací řešení

Základy vývoje softwaru v jazyce Java: A Guide to Outsourcing Successfully

Prozkoumejte tuto základní příručku o úspěšném vývoji softwaru outsourcing Java, abyste zvýšili efektivitu, získali přístup k odborným znalostem a dosáhli úspěchu projektu s The Codest.

thecodest

Přihlaste se k odběru naší znalostní databáze a získejte aktuální informace o odborných znalostech z oblasti IT.

    O nás

    The Codest - Mezinárodní společnost zabývající se vývojem softwaru s technologickými centry v Polsku.

    Spojené království - ústředí

    • Kancelář 303B, 182-184 High Street North E6 2JA
      Londýn, Anglie

    Polsko - Místní technologická centra

    • Kancelářský park Fabryczna, Aleja
      Pokoju 18, 31-564 Krakov
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polsko

      The Codest

    • Home
    • O nás
    • Služby
    • Case Studies
    • Vědět jak
    • Kariéra
    • Slovník

      Služby

    • To Advisory
    • Vývoj softwaru
    • Vývoj backendu
    • Vývoj frontendů
    • Staff Augmentation
    • Vývojáři backendu
    • Cloudoví inženýři
    • Datoví inženýři
    • Další
    • Inženýři QA

      Zdroje

    • Fakta a mýty o spolupráci s externím partnerem pro vývoj softwaru
    • Z USA do Evropy: Proč se americké startupy rozhodly přesídlit do Evropy?
    • Srovnání technických vývojových center v zahraničí: Tech Offshore Evropa (Polsko), ASEAN (Filipíny), Eurasie (Turecko)
    • Jaké jsou hlavní výzvy CTO a CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2026 by The Codest. Všechna práva vyhrazena.

    cs_CZCzech
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek pt_PTPortuguese cs_CZCzech