window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } 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 modulaarisointi Packwerkin avulla Episode I - The Codest - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2022-01-05
Ohjelmistokehitys

Ruby on Rails:n modulaarisointi Packwerkin avulla Episode I

Nicolas Nisoria

Ihmisten on vaikea nähdä ongelman kokonaiskuvaa ilman, että he käyttävät paljon aikaa ja vaivaa. Näin tapahtuu erityisesti silloin, kun työskennellään suurten ja monimutkaisten sovellusten parissa. Mitkä ovat muutosteni sivuvaikutukset? Miksi tämä rivi tässä vaikuttaa koodipohjan kaukaisen osan testeihin? Täydellistä tai täydellistä ratkaisua ei ole olemassa, mutta Shopify julkaisi työkalun, joka todennäköisesti auttaa sinua ja tiimiäsi.

Johdanto

Puhuakseni Packwerk, meidän on ensin esiteltävä muutama käsite.

  • Koheesio: viittaa siihen, kuinka paljon moduulin tai luokan elementit kuuluvat yhteen.
  • Kytkentä: viittaa moduulien tai luokkien välisen riippuvuuden tasoon.
  • Rajat: viittaa esteisiin koodi. Tässä tapauksessa koodirajalla tarkoitetaan saman koodipohjan eri osa-alueita.
  • Modularisointi: Prosessi, jossa ohjelmistojärjestelmä jaetaan useisiin erillisiin moduuleihin, joista kukin toimii itsenäisesti.

Ongelmat

Kuten tiedämme, Ruby ei tarjoa hyvää ratkaisua koodirajojen valvomiseksi. Voimme määrittää näkyvyyden, mutta kaikki riippuvuudet ladataan globaaliin nimiavaruuteen. Suurissa tai monoliittisissa sovelluksissa tämä rajojen puuttuminen aiheuttaa seuraavia ongelmia.

  • Vähäinen yhteenkuuluvuus,
  • Korkea kytkentä,
  • Spagettikoodi.

Yrittäessään modulaarisoida Shopifyn monoliittia ja asettaa rajoja, he kokeilivat erilaisia ratkaisuja saavuttamatta odotettuja tuloksia:
- Yksityisten vakioiden asettaminen,
- Rajojen asettaminen jalokivien avulla,
- Testien avulla estetään komponenttien väliset yhteydet,
- Rubyn modulaatio-jalokiven käyttäminen,
- Mikropalvelujen luominen.

Aikaisemmista yrityksistä saadun tiedon avulla he päättivät luoda oman työkalun: Packwerk.

Packwerk

Mikä on Packwerk?

Packwerk on staattinen analyysityökalu, jota käytetään rajaamaan ryhmien välisiä Ruby tiedostot nimeltä paketit.

Mikä on paketti?

A paketti on kansio, joka sisältää automaattisesti ladattua koodia. Shopifyn joukkue kannustaa käyttämään parhaita suunnittelukäytäntöjä paketteja luodessaan.
- Meidän pitäisi pakata yhteen asioita, joilla on korkea toiminnallinen koheesio,

  • Pakettien tulisi olla suhteellisen löyhästi kytkettyjä toisiinsa.

Rajatarkastusten tyypit

Voimme valvoa yksityisyyden suojaa ja riippuvuusrajoja, tarkistaa rajojen rikkomista ja syklisiä riippuvuuksia.

Packwerk käytännössä

Paketteja luotaessa ei ole olemassa yhtä tiettyä tapaa jäsentää tai uudelleen jäsentää sovellusta. Tässä artikkelissa noudatamme lähestymistapaa, jota ehdottaa
Stephan Hagemann vuonna Asteittainen modulaarisointi Ruby on Rails:lle.

Valitse projekti

Voit luoda uuden projekti tai valitse jokin hankkeistasi. Päätin käyttää avoimen lähdekoodin projektia nimeltä CodeTriage. On tärkeää mainita, että tarvitsemme Rails 6 -sovelluksen, koska Packwerk käyttää Zeitwerkia.

Packwerkin alustaminen

Ensin meidän on lisättävä helmi Gemfileen seuraavasti jalokivi 'packwerk' ja aja sitten niputtaakonsolissa. Sitten olemme valmiita alustamaan helmi käynnissä packwerk init.

Tämän jälkeen huomaamme, että Packwerk tuotti meille kolme tiedostoa:

  • packwerk.yml

  • package.yml

  • taivutukset.yml

packwerk.yml on konfigurointitiedosto Packwerk jossa määritetään mukaan otetut ja pois jätetyt tiedostot, luetellaan latauspolut, määritellään taivutustiedosto ja muita asioita;

package.yml on paketin asetustiedosto. Tässä tiedostossa lisäämme pakettimme rajoja koskevat asetukset. Mikä tahansa kansio, jossa on package.yml, tunnistetaan paketiksi seuraavasti Packwerk. Siinä kaikki, Packwerk loi ensimmäisen
paketti ja kutsumme sitä root paketti.

taivutukset.yml on paikka, johon sijoitamme mukautetut taivutukset ja lyhenteet, jos käytämme niitä.

Lisätietoa tiedostoista ja niiden konfiguraatiosta on osoitteessa
Packwerk.

Packwerk ominaisuudet

Jotta modularisointi toimisi, tarvitsemme kolme perusominaisuutta: nimetty säiliö, sen sisältöja nimenomaisesti riippuvuudet muista säiliöt. Määritellään siis nämä ominaisuudet Packwerk:

  • Nimi: Paketin nimi on sen suhteellinen polku paketin juuresta.
    sovellus.

  • Sisältö: Kun asetamme package.yml-tiedoston kansioon, kaikki kansiossa olevat tiedostot ovat nyt paketin sisältöä.

  • Riippuvuudet: Voimme määritellä riippuvuudet muista paketeista lisäämällä riippuvuusavaimen tiedostoon package.yml.

Toinen tiedosto, jota ei sisällytetä oletusarvoisesti, mutta jota suositellaan, on README. Siinä on tärkeää antaa tietoa paketin käytöstä.

Jakson I loppu

Digitaalisen tuotekehityksen konsultointi

Lue lisää

GraphQL Ruby. Entä suorituskyky?

Kiskot ja muut liikennevälineet

Rails-kehitys TMUX, Vim, Fzf + Ripgrep -ohjelmilla

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

Tulevaisuuden web-sovellusten rakentaminen: The Codest:n asiantuntijatiimin näkemyksiä

Tutustu siihen, miten The Codest loistaa skaalautuvien, interaktiivisten verkkosovellusten luomisessa huipputeknologian avulla ja tarjoaa saumattomia käyttäjäkokemuksia kaikilla alustoilla. Lue, miten asiantuntemuksemme edistää digitaalista muutosta ja liiketoimintaa...

THECODEST
Ohjelmistokehitys

Top 10 Latviassa toimivaa ohjelmistokehitysyritystä

Tutustu Latvian parhaisiin ohjelmistokehitysyrityksiin ja niiden innovatiivisiin ratkaisuihin uusimmassa artikkelissamme. Tutustu siihen, miten nämä teknologiajohtajat voivat auttaa nostamaan liiketoimintaasi.

thecodest
Yritys- ja skaalausratkaisut

Java-ohjelmistokehityksen perusteet: A Guide to Outsourcing Successfully

Tutustu tähän keskeiseen oppaaseen Java-ohjelmistokehityksen onnistuneesta ulkoistamisesta tehokkuuden parantamiseksi, asiantuntemuksen saamiseksi ja projektin onnistumiseksi The Codestin avulla.

thecodest
Ohjelmistokehitys

Perimmäinen opas ulkoistamiseen Puolassa

Ulkoistamisen lisääntyminen Puolassa johtuu taloudellisesta, koulutuksellisesta ja teknologisesta kehityksestä, joka edistää tietotekniikan kasvua ja yritysystävällistä ilmapiiriä.

TheCodest
Yritys- ja skaalausratkaisut

Täydellinen opas IT-tarkastustyökaluihin ja -tekniikoihin

Tietotekniikan tarkastuksilla varmistetaan turvalliset, tehokkaat ja vaatimustenmukaiset järjestelmät. Lue lisää niiden merkityksestä lukemalla koko artikkeli.

Codest
Jakub Jakubowicz teknologiajohtaja ja toinen perustaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

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