(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'); Ruby on Rails modulācija ar Packwerk I epizode - The Codest
The Codest
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Nozares
    • Fintech un banku darbība
    • E-commerce
    • Adtech
    • Healthtech
    • Ražošana
    • Loģistika
    • Automobiļu nozare
    • IOT
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
  • Par mums
  • Pakalpojumi
    • Programmatūras izstrāde
      • Frontend izveide
      • Backend izstrāde
    • Staff Augmentation
      • Frontend izstrādātāji
      • Backend izstrādātāji
      • Datu inženieri
      • Mākoņa inženieri
      • QA inženieri
      • Citi
    • Tā Konsultatīvais dienests
      • Audits un konsultācijas
  • Vērtība par
    • CEO
    • CTO
    • Piegādes vadītājs
  • Mūsu komanda
  • Case Studies
  • Zināt, kā
    • Blogs
    • Tikšanās
    • Tiešsaistes semināri
    • Resursi
Karjera Sazinieties ar mums
Atpakaļ bultiņa ATGRIEZTIES ATPAKAĻ
2022-01-05
Programmatūras izstrāde

Ruby on Rails modulēšana ar Packwerk Episode I

Nicolas Nisoria

Cilvēkiem ir grūti saskatīt problēmas kopainu, neveltot tam daudz laika un pūļu. Īpaši tas notiek, strādājot ar lielām un sarežģītām lietojumprogrammām. Kādas ir manu izmaiņu blakusparādības? Kāpēc šī rindiņa šeit ietekmē attālas datubāzes daļas testus? Ideāls vai pilnīgs risinājums nepastāv, taču Shopify nāca klajā ar rīku, kas, iespējams, palīdzēs jums un jūsu team.

Ievads

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

  • Kohēzija: attiecas uz mērauklu, kas nosaka, cik lielā mērā moduļa vai klases elementi pieder viens otram.
  • Savienojums: attiecas uz atkarības līmeni starp moduļiem vai klasēm.
  • Robežas: attiecas uz šķēršļiem starp kods. Šajā gadījumā koda robeža attiecas uz dažādām darbības jomām vienā un tajā pašā datubāzē.
  • Modularizācija: programmatūras sistēmas sadalīšanas process vairākos atsevišķos moduļos, kur katrs modulis darbojas neatkarīgi.

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.

  • Zema kohēzija,
  • Augsta sakabes pakāpe,
  • Spageti kods.

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,

  • Paketēm savā starpā jābūt samērā brīvi saistītām.

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

  • package.yml

  • inflections.yml

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:

  • Nosaukums: Paketes nosaukums ir tās relatīvais ceļš no paketes saknes.
    pieteikums.

  • Saturs: Kad mēs ievietojam package.yml mapē, visi mapē esošie faili kļūst par paketes saturu.

  • Atkarības: Mēs varam definēt atkarības no citām pakotnēm, pievienojot atkarību atslēgu uz package.yml.

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

Saistītie raksti

Ilustrācija viedtālruņa veselības aprūpes lietotnei ar sirds ikonu un pieaugošo veselības diagrammu, kas apzīmēta ar The Codest logotipu, kurš pārstāv digitālās veselības un HealthTech risinājumus.
Programmatūras izstrāde

Veselības aprūpes programmatūra: Mārketinga programmatūra: veidi, izmantošanas gadījumi

Šodien veselības aprūpes organizāciju rīcībā esošie rīki vairs neatgādina papīra diagrammas, kas tika izmantotas pirms vairākiem gadu desmitiem. veselības aprūpes programmatūra tagad atbalsta veselības aprūpes sistēmas, pacientu aprūpi un mūsdienīgu veselības aprūpes sniegšanu klīniskajās un...

TĀKĀDĒJAIS
Abstrakta ilustrācija ar lejupejošu joslu diagrammu ar augošu bultiņu un zelta monētu, kas simbolizē izmaksu efektivitāti vai ietaupījumus. Augšējā kreisajā stūrī redzams The Codest logotips ar saukli "In Code We Trust" uz gaiši pelēka fona.
Programmatūras izstrāde

Kā paplašināt izstrādātāju komandu, nezaudējot produkta kvalitāti

Palielināt izstrādātāju komandu? Uzziniet, kā augt, nezaudējot produkta kvalitāti. Šajā rokasgrāmatā aplūkotas pazīmes, kas liecina, ka ir pienācis laiks paplašināt komandu, komandas struktūra, pieņemšana darbā, vadība un rīki, kā arī tas, kā The Codest var...

TĀKĀDĒJAIS
Programmatūras izstrāde

Uz nākotni noturīgu tīmekļa lietojumprogrammu veidošana: The Codest ekspertu komandas ieskats

Uzziniet, kā The Codest izceļas mērogojamu, interaktīvu tīmekļa lietojumprogrammu izveidē, izmantojot modernākās tehnoloģijas un nodrošinot viengabalainu lietotāja pieredzi visās platformās. Uzziniet, kā mūsu zināšanas veicina digitālo transformāciju un biznesa...

TĀKĀDĒJAIS
Programmatūras izstrāde

Top 10 Latvijā bāzēti programmatūras izstrādes uzņēmumi

Mūsu jaunākajā rakstā uzziniet vairāk par Latvijas labākajiem programmatūras izstrādes uzņēmumiem un to inovatīvajiem risinājumiem. Uzziniet, kā šie tehnoloģiju līderi var palīdzēt uzlabot jūsu biznesu.

thecodest
Uzņēmumu un mērogošanas risinājumi

Java programmatūras izstrādes pamati: A Guide to Outsourcing Successfully

Izpētiet šo būtisko rokasgrāmatu par veiksmīgu outsourcing Java programmatūras izstrādi, lai uzlabotu efektivitāti, piekļūtu speciālajām zināšanām un sekmīgi īstenotu projektus ar The Codest.

thecodest

Abonējiet mūsu zināšanu bāzi un saņemiet jaunāko informāciju par IT nozares pieredzi.

    Par mums

    The Codest - starptautisks programmatūras izstrādes uzņēmums ar tehnoloģiju centriem Polijā.

    Apvienotā Karaliste - Galvenā mītne

    • 303B birojs, 182-184 High Street North E6 2JA
      Londona, Anglija

    Polija - Vietējie tehnoloģiju centri

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varšava, Polija

    The Codest

    • Sākums
    • Par mums
    • Pakalpojumi
    • Case Studies
    • Zināt, kā
    • Karjera
    • Vārdnīca

    Pakalpojumi

    • Tā Konsultatīvais dienests
    • Programmatūras izstrāde
    • Backend izstrāde
    • Frontend izveide
    • Staff Augmentation
    • Backend izstrādātāji
    • Mākoņa inženieri
    • Datu inženieri
    • Citi
    • QA inženieri

    Resursi

    • Fakti un mīti par sadarbību ar ārējo programmatūras izstrādes partneri
    • No ASV uz Eiropu: Kāpēc Amerikas jaunuzņēmumi nolemj pārcelties uz Eiropu?
    • Tehnoloģiju ārzonas attīstības centru salīdzinājums: Tech Offshore Eiropa (Polija), ASEAN (Filipīnas), Eirāzija (Turcija)
    • Kādi ir galvenie CTO un CIO izaicinājumi?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Autortiesības © 2026 The Codest. Visas tiesības aizsargātas.

    lvLatvian
    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 lt_LTLithuanian is_ISIcelandic lvLatvian