(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'); Fáðu nánari upplýsingar um Ruby on Rails með Pub/Sub - The Codest
The Codest
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Iðnaðargreinar
    • Fjártæknifyrirtæki og bankastarfsemi
    • E-commerce
    • Adtech
    • Heilbrigðistækni
    • Framleiðsla
    • Flutningar
    • Bifreiða
    • Internet hlutanna
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
  • Um okkur
  • Þjónusta
    • Hugbúnaðarþróun
      • Framhliðþróun
      • Bakendaþróun
    • Staff Augmentation
      • Framhliðaráþrófarar
      • Bakhliðaráþróunaraðilar
      • Gagnaverkfræðingar
      • Skýjaverkfræðingar
      • Gæðatryggingartæknimenn
      • Annað
    • Það er ráðgjafi
      • Endurskoðun og ráðgjöf
  • Gildi fyrir
    • CEO
    • CTO
    • Afhendingarstjóri
  • Teymið okkar
  • Case Studies
  • Vitið hvernig
    • Blogg
    • Fundir
    • Vefnámskeið
    • Auðlindir
Starfsferilmöguleikar Hafðu samband
Aftur ör Farðu aftur
2022-12-07
Hugbúnaðarþróun

Fáðu nánari upplýsingar um Ruby on Rails með Pub/Sub

The Codest

Michal Pawlak

Æðsti Ruby-þróunaraðili

Pub/Sub getur fært verkefninu margvíslega kosti – það getur gert kóðann hreinan, losað þjónusturnar og gert þær auðveldlega stækkanlegar. Lærðu meira um Pub/Sub í eftirfarandi grein og lyftu verkefninu þínu á næsta stig!

Hér er tómt.

Rúbín á Relsar (Relsar, Réttur til afturkomu) er vel þekktur vefur forritarammi skrifaður í Rúbín forritunarmál. Birta/áskrifa er stutt nafn á hugbúnaðarhönnunarmynstrum sem kallast Birta–áskrifa. Ég mun útskýra hvernig samskipti milli hugbúnaðareininga í Rails gætu verið leyst með Pub/Sub.

Hvað er Pub/sub?

Birta/áskrifa er hugbúnaðarhönnunarmynstur sem gerir þjónustu kleift að eiga samskipti sín á milli. Þjónusta
felur í sér annað af tveimur hlutverkum: útgefanda (sem framleiðir) eða viðtakanda (sem neytir). Hvað er
framleitt til neyslu er ákvarðað sem atburður eða skilaboð eða tilkynning. Í
Í samhengi þessarar greinar eru þau notuð skiptum saman til að vísa til sama hlutar.
Þjónustan sem framleiðir veit ekki hver neytir. Þjónustan sem neytir veit ekki
Þekkja uppruna skilaboðanna. Þeir geta verið óþekktir hver öðrum. Það er öðruvísi en
Skilaboðaraðir, þar sem íhlutinn sem sendir skilaboðin þekkir oft áfangastaðinn sinn.
– þessi stíll skilaboðamiðlunar gerir þér kleift að senda skilaboð hvar sem er. Þessi aðferð er kjarni
af Birta/áskrifa og það þýðir að þau eru aftengd.

Til að tjá gagnkvæm hagsmuni sín verða þeir að deila sameiginlegri skilningi. Þess vegna,
báðar hlutverk hafa óbeina refishvörf þar sem framleiðandi skilaboða og
neytandi skilaboða sem mætir. Þessi vélbúnaður kallast viðfangsefni, áskrift eða efni. Það er
Ábyrgur fyrir að flokka skilaboð eftir efni, er það í eðli sínu stateless skilaboðasíu.
Þemu virka sem útsendingastöðvar. Útgefandi framleiðir skilaboðin til þemasins,
áskrifendur fá strax skilaboðin frá viðfangsefninu. Vegna afkúplunar
Þjónustur, skilvirkasta leiðin til að skiptast á skilaboðum er að vinna úr þeim á ósamstilltan hátt.

Rails án Pub/Sub

Á sjálfgefinni stillingu er engin Rails-viðbót fyrir hugbúnaðarhönnunarmynstur til að senda skilaboð á milli íhluta. Forritarar nota staðlaða hlutbundin forritun (OOP) fyrirmynd: að senda breytur til fallanna, að biðja um flokka um gildi.

Þegar forritið er frekar einfalt gæti það dugað. Þegar forritið stækkar, til dæmis, þarf að framkvæma sumar aðgerðir ósamstillt, þá … verkefni þarf abstraktjón sem leysir það gögn vinnslaferli. Í stað þess að enduruppgötva hjólið geta forritarar innleitt Birta/áskrifa til að fylla þennan skort á abstraktun.

Kostir Pub/Sub með Rails

  • Forðastu Active Record callbacks.
  • Með því að bæta við ósamhverfri samhliða úrvinnslu í kerfi batna frammistaða, áreiðanleiki og Stigstærð eru bætt.
  • Skilaboð má senda út ósamhliða til mismunandi hluta kerfisins.
  • Leyfir að senda skilaboð ósamhliða til mismunandi hluta kerfisins.
  • Aðskilnaður – að bæta við eða breyta virkni mun ekki hafa áhrif á neitt vegna Pub/Sub
    Leyfir þér að breyta hvernig allt hefur samskipti.
  • Skilaboðaneytandinn þarf ekki lengur að athuga reglulega hvort uppfærslur eða nýjar séu til.
    upplýsingar. Það dregur úr afhendingartöfum sem geta verið sérstaklega vandamál í kerfum
    án þolinmæði fyrir töfum.
  • Það er engin takmörkun á því hversu marga áskrifendur kerfið getur sinnt, því það getur breyst,
    uppfæra, margfalast eða hverfa hvenær sem er.

Ókostir Pub/Sub með Rails

  • Helsti ókostur við birtingar-/áskriftarkerfi er aðskilnaður birgis og
    áskrifandi.

Kynning á Rails Pub/Sub

Dæmi um uppsprettu í Rails var skrifað með bókasafni.
Birgja/áskrifendakerfi í Rails (í Ruby-heitihefð er bókasafn kallað gem): Þú finnur nánari upplýsingar í readme-skrá gemsins. Framkvæmdin samanstendur af einingum:

  1. Lén,
  2. Viðburður,
  3. Viðburðahandfari,
  4. Viðburðargáfandi,
  5. áskrift.

Lén

Lýsir viðskiptalógík til að veita samhengi fyrir Pub/Sub og þannig gera það hreint kóði.

 tilkynningar
   framlengir PubSub::Domain
 end
 module Reports
   extend PubSub::Domain
 end

Viðburður

Þetta er flokkur sem lýsir því sem gerðist. Lýstu nafni flokksins sem sjálfskýrandi með því sem gerðist, til dæmis: felldur niður, breyttur, búinn til, eytt, sendur, uppfærður. Atburðanafni geta litið svona út: ProfitAndLossStatementCreatedEvent, sem þýðir að fjárhagsyfirlit hafi verið búið til.

 class Reports::ProfitAndLossStatementCreatedEvent < PubSub::DomainEvent
   attribute :profit_and_loss_statement_id, Types::Strict::Integer
 end

Viðburðargagnaveitandi

Flokkur sem getur sent atburði. Dæmið sýnir hvernig búa má til þjónustuskýrslu. Þegar skýrslan er búin til með góðum árangri er sent atburður um það.

class Reports::ProfitAndLossStatementService
   include PubSub::Emit
    def execute
 emit(:report_profit_and_loss_statement_created, profit_and_loss_statement_id: id) if result.ok?
   end
 end

Viðburðahandfari

Þetta forrit ætti að keyra sem svar við meðhöndlun atburðar.

module Notifications
 class ReportsProfitAndLossStatementCreatedHandler < PubSub::DomainEventHandler
   def call
 ReportMailer.profit_and_loss_statement(profit_and_loss_statement).deliver_now
   end

   private

   def profit_and_loss_statement
 ProfitAndLossStatement.find(event_data.profit_and_loss_statement_id)
   end
 end
end

áskrift

Atburðir eru tengdir viðhöndlara sína með áskriftum.

tilkynningar:
 skýrslur__hagnaðarskýrsla_búin_til: async

Dæmi um notkunartilvik:

  • “Fylgja”-eiginleiki í samfélagsnetum,
  • Internet hlutanna,
  • Póstsending,
  • Tilkynning um búna skrár.

Svipuð mynstur

  1. Viðburðarbyssa – Þættir geta sent atburði til EventBus án þess að vita hver muni taka þá upp eða hversu margir viðbragðsaðilar muni react,
  2. Áhorfandi – viðfangsefnið heldur lista yfir háð aðila, sem kallast áhorfendur, og tilkynnir þeim um breytingar á ástandi sínu,
  3. Samlagning – við fyrirspurnir spyrja viðskiptavinir kerfið reglulega hvort einhverjar nýjar atburðir eða gögn séu til.

Gersemar

  • https://github.com/edisonywh/rocketman

  • https://github.com/krisleech/wisper

  • https://github.com/stevo/pubsubájárnbrautir

Yfirlit

Pub/sub er ekki algeng nálgun í Ruby on Rails. Eins og fram kemur í greininni getur þetta mynstur fært verkefninu margvíslega kosti – það getur gert kóðann hreinan, losað þjónusturnar og gert þær auðveldlega stækkanlegar.

samstarfsfáninn

Tengdar greinar

Hugbúnaðarþróun

5 dæmi um bestu notkun Ruby

Hefurðu einhvern tíma velt því fyrir þér hvað við getum gert með Ruby? Jæja, loftið er líklega takmörkin, en við erum fús til að segja frá nokkrum meira eða minna þekktum dæmum...

The Codest
Pawel Muszynski Software Engineer
Hugbúnaðarþróun

Rails-þróun með tmux, vim, fzf og ripgrep

Fyrir nokkrum árum var ég að grilla með nokkrum vinum mínum, allir Java-forritarar. Ekki viss hvernig það kom upp, en við byrjuðum að tala um forritunarumhverfi okkar. Ég...

The Codest
Marcin Doliwa Software Engineer
Hugbúnaðarþróun

Vörþróun: Python vs. Ruby

Python og Ruby eru bæði mest notuðu bakenda forritunarmálin. Python er aðeins vinsælli og hefur víðari notkun. Hins vegar býður Ruby einnig upp á marga kosti og...

The Codest
Kamil Ferens Vöxtarstjóri
Hugbúnaðarþróun

Hlutverk Rack í vistkerfi Ruby

Lærðu meira um hlutverk rack í vistkerfi Ruby frá sérfræðingi okkar og bættu Ruby-færni þína.

Nikólás Nisóría

Gerðu þig áskrifanda að þekkingargrunni okkar og vertu upplýstur um sérfræðiþekkingu upplýsingatæknigeirans.

    Um okkur

    The Codest – Alþjóðlegt hugbúnaðarþróunarfyrirtæki með tæknimiðstöðvar í Póllandi.

    Bretland - Höfuðstöðvar

    • Skrifstofa 303B, 182-184 High Street North E6 2JA
      Lundúnir, England

    Pólland - staðbundin tæknimiðstöðvar

    • Fabryczna skrifstofugarður, Aleja
      Herbergi 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsjá, Pólland

    The Codest

    • Heim
    • Um okkur
    • Þjónusta
    • Case Studies
    • Vitið hvernig
    • Starfsferilmöguleikar
    • Orðabók

    Þjónusta

    • Það er ráðgjafi
    • Hugbúnaðarþróun
    • Bakendaþróun
    • Framhliðþróun
    • Staff Augmentation
    • Bakhliðaráþróunaraðilar
    • Skýjaverkfræðingar
    • Gagnaverkfræðingar
    • Annað
    • Gæðatryggingartæknimenn

    Auðlindir

    • Staðreyndir og goðsagnir um samstarf við utanaðkomandi hugbúnaðarþróunaraðila
    • Frá Bandaríkjunum til Evrópu: Af hverju ákveða bandarísk sprotafyrirtæki að flytja til Evrópu?
    • Samanburður á tæknifjarkerfisþróunarmiðstöðvum: Tech Offshore Europe (Pólland), ASEAN (Filippseyjar), Eurasia (Tyrkland)
    • Hvert eru helstu áskoranir CTO-a og CIO-a?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Höfundarréttur © 2026 af The Codest. Öll réttindi áskilin.

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