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...
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.
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.
Á 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.
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:
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
Þ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
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
Þ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
Atburðir eru tengdir viðhöndlara sína með áskriftum.
tilkynningar:
skýrslur__hagnaðarskýrsla_búin_til: async
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.
