window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Ruby on Rails modulariseerimine koos Packwerk Episode I-ga - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2022-01-05
Tarkvaraarendus

Ruby on Rails modulariseerimine koos Packwerki I episoodiga

Nicolas Nisoria

Inimestel on raske näha probleemi suurt pilti, ilma et nad pühendaksid sellele palju aega ja vaeva. See juhtub eriti suurte ja keeruliste rakendustega töötades. Millised on minu muudatuste kõrvalmõjud? Miks mõjutab see rida siin koodibaasi kaugema osa teste? Täiuslikku või täielikku lahendust ei ole olemas, kuid Shopify tuli välja tööriistaga, mis tõenäoliselt aitab teid ja teie meeskonda.

Sissejuhatus

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

  • Ühtekuuluvus: viitab sellele, kui palju mooduli või klassi elemendid kokku kuuluvad.
  • Haakeseadeldis: viitab moodulite või klasside vahelise sõltuvuse tasemele.
  • Piirid: viitab tõketele, mis esinevad kood. Sellisel juhul viitab koodipiir eri valdkondadele sama koodibaasi sees.
  • Modulariseerimine: protsess, mille käigus jagatakse tarkvarasüsteem mitmeks eraldi mooduliks, kus iga moodul töötab iseseisvalt.

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.

  • Vähene ühtekuuluvus,
  • Kõrge haakeseadeldis,
  • Spagetikood.

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,
- Mikroteenuste loomine.

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,

  • Paketid peaksid olema omavahel suhteliselt lõdvalt seotud.

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 Rails järkjärguline modulatsioon.

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 meile kolm faili:

  • packwerk.yml

  • package.yml

  • inflections.yml

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:

  • Nimi: Paketi nimi on selle suhteline tee juurtelt
    rakendus.

  • Sisu: Kui me paigutame pakett.yml-i kausta, on kõik selles kaustas olevad failid nüüd paketi sisu.

  • Sõltuvused: Me võime määratleda sõltuvused teistest pakettidest, lisades sõltuvuste võtme võtme package.yml.

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

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

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