πŸ‘¨πŸ»β€πŸ’» АдминистрированиС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ πŸ‘¨πŸ»β€πŸ’» - [Thinknetica] Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Π΅ΠΌΠ΅Π½Ρ‚ΡŒΠ΅Π² ― ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ оптимизация тСстов Rails-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (2024) | Π‘Π»ΠΈΠ² ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… курсов ΠΈ Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³ΠΎΠ² Π½Π° SLIV.ONE Π•Π–Π•Π”ΠΠ•Π’ΠΠž! Π­ΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»! Π‘Ρ…Π΅ΠΌΡ‹ Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°! БСсплатныС Онлайн ΠšΡƒΡ€ΡΡ‹!

πŸ‘¨πŸ»β€πŸ’» АдминистрированиС ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ πŸ‘¨πŸ»β€πŸ’» [Thinknetica] Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Π΅ΠΌΠ΅Π½Ρ‚ΡŒΠ΅Π² ― ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ оптимизация тСстов Rails-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (2024)

PO$EIDON

⚑️ #moder_PROFI ⚑️
Команда Ρ„ΠΎΡ€ΡƒΠΌΠ°
[Thinknetica] Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Π΅ΠΌΠ΅Π½Ρ‚ΡŒΠ΅Π² ― ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ оптимизация тСстов Rails-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (2024)
2024-11-25_10-52-22.png
Π’ΠΎΡ€ΠΊΡˆΠΎΠΏ для Ruby ΠΈ Rails Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя оТидания выполнСния тСстов Π½Π° CI ΠΈ/ΠΈΠ»ΠΈ локально ΠΈ Ρ‚Π΅ΠΌ самым ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΈΡ… Π²Ρ‹ΠΊΠ°Ρ‚ΠΊΠΎΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ расходы Π½Π° CI-инфраструктуру.

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚:
  • ΠŸΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹
    На Π²ΠΎΡ€ΠΊΡˆΠΎΠΏΠ΅ рассмотрим Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ для профилирования ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ тСстов, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «максимум Π²Ρ‹Π³ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉΒ» (вСдь Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ тСсты ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния лишь для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ тСсты).
  • Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹
    Освоим Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ инструмСнты для профилирования Ruby-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ Stackprof ΠΈ Vernier, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ познакомимся со спСциализированным ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ TestProf.
  • Навыки
    ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Π²Ρ‹ сразу ΠΆΠ΅ смоТСтС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. И Π½Π΅ ΡƒΠ΄ΠΈΠ²Π»ΡΠΉΡ‚Π΅ΡΡŒ, Ссли всСго Π·Π° нСсколько часов Π²Ρ‹ смоТСтС ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ваши тСсты Π² нСсколько Ρ€Π°Π·!
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΡ€ΠΊΡˆΠΎΠΏΠ°

Π”Π΅Π½ΡŒ 1. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… тСстов. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСстов ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ruby-ΠΊΠΎΠ΄Π°


На стартС обсудим, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ тСсты Π²Π»ΠΈΡΡŽΡ‚ Π½Π° процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ускорСния тСстов, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ профилирования ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΊΠΎΠ΄Π° тСстов.

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ стандартныС способы поиска ΡƒΠ·ΠΊΠΈΡ… мСст Π² Ruby-ΠΊΠΎΠ΄Π΅ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ тСстов. Π£Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ классы ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² тСстах ΠΎΠ½ΠΈ способны Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹:
  • ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ…, Π²Π½Π΅ΡˆΠ½ΠΈΡ… (Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… профилирования ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°) способах ускорСния тСстов ΠΈ ΠΈΡ… ограничСниях;
  • ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты профилирования, ΠΊΠ°ΠΊ StackProf, RubyProf, Vernier;
  • Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π»Π΅ΠΉΠΌΠ³Ρ€Π°Ρ„Ρ‹;
  • ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ тСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния.
Π”Π΅Π½ΡŒ 2. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ знакомство с TestProf. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°Π±Ρ€ΠΈΠΊ

ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с инструмСнтами профилирования, входящими Π² TestProf, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° тСстов для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ:
  • Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TagProf;
  • смоТСтС ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ влияниС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ событий Π² ΠΊΠΎΠ΄Π΅ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ EventProf;
  • Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ использованиС Ρ„Π°Π±Ρ€ΠΈΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ FactoryProf.
Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹:
смоТСтС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ нСбольшой Π½Π°Π±ΠΎΡ€ тСстов, оптимизация ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, с ΠΎΠ΄Π½ΠΎΠΉ стороны, даст Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ прирост скорости, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Ρ‚Π΅Ρ…Π½ΠΈΠΊ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, спСцифичный для прилоТСния.

Π”Π΅Π½ΡŒ 3. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ тСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ…. Автоматизация профилирования ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅ΠΉ части ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ познакомимся с инструмСнтами TestProf для ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² тСстах:
  • before_all / let_it_be для ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… контСкста RSpec (Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ фикстуры);
  • AnyFixture для Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… фикстур.
Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹:
сформируСтС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ тСстов, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… для своСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смогут Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ тСстовым Ρ„Π°ΠΉΠ»Π°ΠΌ для достиТСния ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ускорСния.

Π’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ обсудим возмоТности Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, прСдоставляСмыС TestProf, Π² частности TestProf Autopilot.

Автор
Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”Π΅ΠΌΠ΅Π½Ρ‚ΡŒΠ΅Π²

Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² Π—Π»Ρ‹Ρ… марсианах, Π°Π²Ρ‚ΠΎΡ€ TestProf, ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡŒΡŽΡ‚ΠΎΡ€ Π² Rails, Π»Π°ΡƒΡ€Π΅Π°Ρ‚ Ruby Hero Russia 2017
  • RoR-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с 15-Ρ‚ΠΈ Π»Π΅Ρ‚Π½ΠΈΠΌ стаТСм.
  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² EvilMartians
  • ΠšΡ€ΠΎΠΌΠ΅ RoR, Π·Π½Π°Π΅Ρ‚ ΠΈ примСняСт Erlang, Python, ActionScript, Π‘++, Java
  • ΠšΠΎΠΌΠΌΠΈΡ‚Π΅Ρ€ Π² Rails, aΠ²Ρ‚ΠΎΡ€ Π³Π΅ΠΌΠΎΠ² AnyCable ΠΈ LiteCable
  • РСгулярно выступаСт Π½Π° ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… Ruby-конфСрСнциях Π½Π° ΠΎΠ΄Π½ΠΎΠΉ сцСнС с DHH ΠΈ ΠœΠ°Ρ‚Ρ†Π΅ΠΌ
ИБВОЧНИК
Π‘ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ содСрТимоС. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
БКАЧАВЬ
Π‘ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ содСрТимоС. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
 
Π‘Π²Π΅Ρ€Ρ…Ρƒ