Aktyvusis palaikymas yra pagrindinės „Rails“ dalis, kuri teikia „Ruby“ kalbos plėtinius, įrankius ir kitus dalykus. Vienas iš jų yra instrumentavimo API, kurį galima naudoti programoje, kad būtų galima matuoti tam tikrus veiksmus, vykstančius „Ruby“ kode, pvz., tokius, kurie vyksta „Rails“ programoje ar paties karkaso viduje. Tačiau jis nėra ribotas tik „Rails“. Jei norite, jį galima naudoti nepriklausomai kituose „Ruby“ scenarijuose.
Šiame vadove sužinosite, kaip naudoti „Aktyvaus palaikymo“ instrumentavimo API, kad matuotumėte įvykius „Rails“ ir kitame „Ruby“ kode.
Po šios vadovėlio perskaitymo žinosite:
Ką gali suteikti instrumentavimas.
Kaip pridėti prenumeratorių į kablys.
Kaip peržiūrėti laiko matavimus iš instrumentavimo naršyklėje.
Kablys „Rails“ karkase instrumentavimui.
Kaip sukurti pasirinktinį instrumentavimo įgyvendinimą.
Aktyvaus palaikymo teikiamas instrumentavimo API leidžia programuotojams kurti kablys, į kuriuos gali įsikišti kiti programuotojai. „Rails“ karkase yra kelios tokių. Šiuo API programuotojai gali pasirinkti, kada būti informuoti, kai tam tikri įvykiai įvyksta jų programoje ar kitame „Ruby“ kode.
Pavyzdžiui, yra kablys, kuris teikiamas „Active Record“ ir kuris yra iškviestas kiekvieną kartą, kai „Active Record“ naudoja SQL užklausą duomenų bazėje. Šį kablys galima prenumeruoti ir jį galima naudoti, kad būtų stebimas užklausų skaičius tam tikro veiksmo metu. Yra kitas kablys, kuris apima veiksmo valdiklio veiksmo apdorojimą. Jis galėtų būti naudojamas, pavyzdžiui, stebint, kiek laiko užtrunka konkretus veiksmas.
Netgi galite sukurti savo įvykius savo programoje, kuriuos vėliau galite prenumeruoti.
Jei jums rūpi tikslumas started ir finished skaičiuojant tikslų praėjusį laiką, tada naudokite ActiveSupport::Notifications.monotonic_subscribe. Pateiktas blokas gautų tuos pačius argumentus kaip ir aukščiau, bet started ir finished turės reikšmes su tikslia monotoniška laiku, o ne sienos laiku.
Apibrėžti visus tuos bloko argumentus kiekvieną kartą gali būti nuobodu. Galite lengvai sukurti ActiveSupport::Notifications::Event
iš bloko argumentų taip:
Taip pat galite prenumeruoti įvykius, atitinkančius reguliariąją išraišką. Tai leidžia prenumeruoti
kelis įvykius vienu metu. Taip prenumeruoti viską iš ActionController:
ActiveSupport::Notifications.subscribe(/action_controller/)do|*args|# tikrinti visus ActionController įvykiusend
„Rails“ įgyvendina Server Timing standartą, kad laiko informacija būtų prieinama naršyklėje. Norėdami tai įjungti, redaguokite savo aplinkos konfigūraciją (dažniausiai development.rb, nes tai dažniausiai naudojama vystymui), kad būtų įtraukta ši informacija:
config.server_timing=true
Kai konfigūracija sukonfigūruota (įskaitant serverio paleidimą iš naujo), galite eiti į naršyklės kūrėjo įrankių skydelį, tada pasirinkti Tinklas ir perkrauti savo puslapį. Tada galite pasirinkti bet kurį užklausą į savo „Rails“ serverį ir matysite serverio laiko matavimus laiko matavimo skirtuke. Norėdami pamatyti pavyzdį, kaip tai padaryti, žr. Firefox dokumentaciją.
:cache_hits raktas įtraukiamas tik tada, jei kolekcija yra talpinama su cached: true.
ruby
{
identifier: "/Users/adam/projects/notifications/app/views/posts/_post.html.erb",
count: 3,
cache_hits: 0
}
Pridėti savo įvykius taip pat yra lengva. Aktyvusis palaikymas atliks visą
sunkų darbą už jus. Tiesiog iškvieskite ActiveSupport::Notifications.instrument su name, payload ir bloku.
Pranešimas bus išsiųstas po to, kai blokas grąžins rezultatą. Aktyvusis palaikymas sugeneruos pradžios ir pabaigos laikus,
ir pridės instrumentuotojo unikalų ID. Visi į instrument išsiųsti duomenys bus
pateks į pranešimo duomenis.
Štai pavyzdys:
ActiveSupport::Notifications.instrument"my.custom.event",this: :datado# čia atlikite savo individualius veiksmusend
Kurdami savo įvykius, turėtumėte laikytis "Rails" konvencijų. Formatas yra: įvykis.biblioteka.
Jei jūsų programa siunčia "Tweet'us", turėtumėte sukurti įvykį pavadinimu tweet.twitter.
Atsiliepimai
Jūs esate skatinami padėti pagerinti šio vadovo kokybę.
Prašome prisidėti, jei pastebite rašybos klaidų ar faktinių klaidų.
Norėdami pradėti, galite perskaityti mūsų dokumentacijos prisidėjimo skyrių.
Taip pat gali būti nepilnos informacijos arba informacijos, kuri nėra atnaujinta.
Prašome pridėti bet kokią trūkstamą dokumentaciją pagrindiniam. Patikrinkite
Edge vadovus pirmiausia, ar
problemas jau išspręsta arba ne pagrindinėje šakoje.
Patikrinkite Ruby on Rails vadovų gaires
dėl stiliaus ir konvencijų.
Jei dėl kokios nors priežasties pastebite kažką, ką reikia ištaisyti, bet negalite patys tai pataisyti, prašome
pranešti apie problemą.
Ir galiausiai, bet ne mažiau svarbu, bet koks diskusijos dėl Ruby on Rails
dokumentacijos yra labai laukiamos oficialiame Ruby on Rails forume.