(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': data().getTime(),įvykis:'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'); Ruby on Rails moduliavimas su "Packwerk" I epizodas - The Codest
The Codest
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Pramonės šakos
    • Fintech ir bankininkystė
    • E-commerce
    • Adtech
    • Sveikatos technologijos
    • Gamyba
    • Logistika
    • Automobiliai
    • IOT
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
  • Apie mus
  • Paslaugos
    • Programinės įrangos kūrimas
      • Priekinės dalies kūrimas
      • Galinės dalies kūrimas
    • Staff Augmentation
      • Priekinės dalies kūrėjai
      • Atgalinės versijos kūrėjai
      • Duomenų inžinieriai
      • Debesų inžinieriai
      • QA inžinieriai
      • Kita
    • Patariamoji tarnyba
      • Auditas ir konsultacijos
  • Vertė už
    • CEO
    • CTO
    • Pristatymo vadybininkas
  • Mūsų komanda
  • Case Studies
  • Sužinokite, kaip
    • Tinklaraštis
    • Susitikimai
    • Interneto seminarai
    • Ištekliai
Karjera Susisiekite su mumis
Atgal rodyklė GRĮŽTI ATGAL
2022-01-05
Programinės įrangos kūrimas

Ruby on Rails moduliavimas su "Packwerk" I epizodas

Nicolas Nisoria

Žmonėms sunku pamatyti bendrą problemos vaizdą, neskiriant tam daug laiko ir pastangų. Taip atsitinka ypač dirbant su didelėmis ir sudėtingomis programomis. Koks yra mano pakeitimų šalutinis poveikis? Kodėl čia esanti eilutė daro įtaką nutolusios kodų bazės dalies testams? Tobulo ar išsamaus sprendimo nėra, tačiau "Shopify" išleido priemonę, kuri tikriausiai padės jums ir jūsų team.

Įvadas

Norint kalbėti apie Packwerk, pirmiausia turime pristatyti keletą sąvokų.

  • Sanglauda: reiškia priemonę, rodančią, kiek modulio ar klasės elementai priklauso vieni kitiems.
  • Jungtis: reiškia priklausomybės tarp modulių ar klasių lygį.
  • Ribos: reiškia kliūtis tarp kodas. Šiuo atveju kodo riba reiškia skirtingas tos pačios kodų bazės problemines sritis.
  • Modulavimas: programinės įrangos sistemos padalijimo į kelis atskirus modulius procesas, kai kiekvienas modulis veikia savarankiškai.

Problemos

Kaip žinome, Ruby nepateikia gero sprendimo, kaip užtikrinti kodekso ribų laikymąsi. Galime nurodyti matomumą, tačiau visos priklausomybės bus įkeltos į pasaulinę vardų erdvę. Didelėse arba monolitinėse programose dėl tokio ribų nebuvimo kyla šių problemų.

  • Maža sanglauda,
  • Aukštas sukabinimo lygis,
  • Spagečių kodas.

Bandydami moduliuoti "Shopify" monolitą ir nustatyti ribas, jie išbandė įvairius sprendimus, tačiau nepasiekė laukiamų rezultatų:
- Privačių konstantų nustatymas,
- Ribų nustatymas per brangakmenius,
- Testų naudojimas siekiant išvengti tarpkomponentinių asociacijų,
- Naudojant ‘Ruby" moduliacijos brangakmenį,
- Kūrimas mikroservisai.

Pasinaudoję visomis ankstesnių bandymų žiniomis, jie nusprendė sukurti savo įrankį: Packwerk.

Packwerk

Kas yra "Packwerk"?

Packwerk yra statinės analizės įrankis, naudojamas siekiant nustatyti ribas tarp grupių Ruby failai, vadinami paketai.

Kas yra paketas?

A paketas yra aplankas su automatiškai įkeltu kodu. "Shopify komanda ragina kuriant paketus taikyti geriausią dizaino praktiką.
- Turėtume kartu supakuoti daiktus, kurie yra labai funkcionalūs. sanglauda,

  • Paketai turėtų būti palyginti laisvai susieti tarpusavyje.

Ribinių patikrinimų tipai

Galime užtikrinti privatumo ir priklausomybės ribų laikymąsi, tikrinti ribų pažeidimus ir ciklines priklausomybes.

Packwerk į praktiką

Kuriant paketus nėra vieno konkretaus būdo, kaip struktūrizuoti ar pertvarkyti programą. Šiame straipsnyje vadovausimės metodu, kurį pasiūlė
Stephan Hagemann in Laipsniškas "Ruby on" moduliavimas Bėgiai.

Pasirinkite projektą

Galite sukurti naują projektas arba pasirinkite vieną iš savo projektų. Nusprendžiau naudoti atvirojo kodo projektą, vadinamą CodeTriage. Svarbu paminėti, kad mums reikia Rails 6 programos, nes Packwerk naudoja Zeitwerk.

Inicializuoti "Packwerk

Pirma, turime pridėti gem į savo Gemfile kaip brangakmenis 'packwerk' ir paleiskite paketaskonsolėje. Tuomet esame pasirengę inicializuoti brangakmenį packwerk init.

Po to pastebime, kad Packwerk sugeneruoti trys failai mus:

  • packwerk.yml

  • package.yml

  • inflections.yml

packwerk.yml yra konfigūracijos failas Packwerk kuriame, be kita ko, apibrėšime įtrauktus ir neįtrauktus failus, nurodysime įkėlimo kelius, apibrėšime inflekcijų failą;

package.yml yra paketo konfigūracijos failas. Šiame faile pridėsime mūsų paketo ribų konfigūraciją. Bet kuris aplankas su package.yml bus atpažįstamas kaip paketas Packwerk. Štai ir viskas, Packwerk sukūrėme pirmąjį
paketą ir vadiname jį root pakuotė.

inflections.yml čia patalpinsime savo pasirinktinius linksnius ir akronimus, jei juos naudosime.

Daugiau informacijos apie failus ir jų konfigūraciją rasite
Packwerk.

"Packwerk" savybės

Kad moduliavimas veiktų, reikia trijų pagrindinių savybių: įvardytas konteineris, jos turinys, ir aiškiai priklausomybės dėl kitų konteineriai. Taigi apibrėžkime šias savybes Packwerk:

  • Pavadinimas: Paketo pavadinimas yra jo santykinis kelias nuo šaknies
    taikymas.

  • Turinys: Įdėjus package.yml į aplanką, visi aplanke esantys failai tampa paketo turiniu.

  • Priklausomybės: Galime apibrėžti priklausomybes nuo kitų paketų, pridėdami priklausomybių raktą į package.yml.

Kitas failas, kuris pagal nutylėjimą neįtrauktas, bet rekomenduojamas, yra README. Jame svarbu pateikti informaciją apie paketo naudojimą.

I epizodo pabaiga

Skaitmeninių produktų kūrimo konsultacijos

Skaityti daugiau

"GraphQL Ruby". O kaip dėl našumo?

Bėgiai ir kitos transporto priemonės

"Rails" kūrimas naudojant TMUX, "Vim", Fzf + Ripgrep

Susiję straipsniai

Išmaniojo telefono sveikatos priežiūros programėlės su širdies piktograma ir kylančia sveikatos diagrama, pažymėtos The Codest logotipu, iliustracija, vaizduojanti skaitmeninės sveikatos ir sveikatos technologijų sprendimus.
Programinės įrangos kūrimas

Sveikatos priežiūros programinė įranga: Sveikatos priežiūros paslaugos: tipai, naudojimo atvejai

Įrankiai, kuriais šiandien naudojasi sveikatos priežiūros organizacijos, nė iš tolo neprimena prieš kelis dešimtmečius naudotų popierinių kortelių. sveikatos priežiūros programinė įranga dabar padeda sveikatos sistemoms, pacientų priežiūrai ir šiuolaikiniam sveikatos priežiūros paslaugų teikimui klinikinėse ir...

GERIAUSIAS
Abstrakti mažėjančios stulpelinės diagramos su kylančia rodykle ir auksine moneta, simbolizuojančia ekonomiškumą arba taupymą, iliustracija. Viršutiniame kairiajame viršutiniame kampe pavaizduotas The Codest logotipas ir šūkis "In Code We Trust" šviesiai pilkame fone.
Programinės įrangos kūrimas

Kaip padidinti savo Dev komandą neprarandant produkto kokybės

Didinate savo kūrėjų komandą? Sužinokite, kaip augti neprarandant produkto kokybės. Šiame vadove aptariami ženklai, kad atėjo laikas didinti komandą, komandos struktūra, įdarbinimas, vadovavimas ir įrankiai - ir kaip The Codest gali...

GERIAUSIAS
Programinės įrangos kūrimas

Sukurkite ateičiai atsparias žiniatinklio programas: The Codest ekspertų komandos įžvalgos

Sužinokite, kaip The Codest puikiai kuria keičiamo dydžio interaktyvias žiniatinklio programas, naudodama pažangiausias technologijas ir užtikrindama vientisą naudotojų patirtį visose platformose. Sužinokite, kaip mūsų patirtis skatina skaitmeninę transformaciją ir verslo...

GERIAUSIAS
Programinės įrangos kūrimas

10 geriausių Latvijoje įsikūrusių programinės įrangos kūrimo įmonių

Naujausiame mūsų straipsnyje sužinokite apie geriausias Latvijos programinės įrangos kūrimo įmones ir jų inovatyvius sprendimus. Sužinokite, kaip šie technologijų lyderiai gali padėti pakelti jūsų verslo lygį.

thecodest
Įmonių ir didinimo sprendimai

"Java" programinės įrangos kūrimo pagrindai: A Guide to outsourcing Outsourcing Successfully

Išnagrinėkite šį esminį vadovą, kaip sėkmingai outsourcing "Java" programinę įrangą kurti, kad padidintumėte efektyvumą, įgytumėte patirties ir sėkmingai įgyvendintumėte projektus su The Codest.

thecodest

Prenumeruokite mūsų žinių bazę ir būkite nuolat informuoti apie IT sektoriaus patirtį.

    Apie mus

    The Codest - tarptautinė programinės įrangos kūrimo bendrovė, turinti technologijų centrus Lenkijoje.

    Jungtinė Karalystė - būstinė

    • 303B biuras, 182-184 High Street North E6 2JA
      Londonas, Anglija

    Lenkija - vietiniai technologijų centrai

    • Fabryczna biurų parkas, Aleja
      Pokoju 18, 31-564 Krokuva
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšuva, Lenkija

    The Codest

    • Pagrindinis
    • Apie mus
    • Paslaugos
    • Case Studies
    • Sužinokite, kaip
    • Karjera
    • Žodynas

    Paslaugos

    • Patariamoji tarnyba
    • Programinės įrangos kūrimas
    • Galinės dalies kūrimas
    • Priekinės dalies kūrimas
    • Staff Augmentation
    • Atgalinės versijos kūrėjai
    • Debesų inžinieriai
    • Duomenų inžinieriai
    • Kita
    • QA inžinieriai

    Ištekliai

    • Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu
    • Iš JAV į Europą: Kodėl Amerikos startuoliai nusprendžia persikelti į Europą?
    • Technikos plėtros centrų užsienyje palyginimas: Tech Offshore Europa (Lenkija), ASEAN (Filipinai), Eurazija (Turkija)
    • Kokie yra svarbiausi CTO ir CIO iššūkiai?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autorinės teisės © 2026 The Codest. Visos teisės saugomos.

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