Ruby on Rails

Monitoring & Logging

Rails.logger, log levels, Sentry, New Relic, ActiveSupport::Notifications, tracing, correlation IDs, observability

20 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒÂ·
Senior
1

Logger āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ Rails āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

Rails āđƒāļŠāđ‰ Rails.logger āđ€āļ›āđ‡āļ™āļˆāļļāļ”āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļŦāļĨāļąāļāļ‚āļ­āļ‡āļĢāļ°āļšāļš logging āđ‚āļ”āļĒāļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļˆāļ°āđ€āļ›āđ‡āļ™āļ­āļīāļ™āļŠāđāļ•āļ™āļ‹āđŒāļ‚āļ­āļ‡ ActiveSupport::Logger āļ—āļĩāđˆāđ€āļ‚āļĩāļĒāļ™āļĨāļ‡āđ„āļŸāļĨāđŒāļ­āļĒāđˆāļēāļ‡ log/development.log, log/production.log āđ€āļ›āđ‡āļ™āļ•āđ‰āļ™ āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļš environment āđ‚āļ”āļĒ logger āļ™āļĩāđ‰āļˆāļ°āļ–āļđāļāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđ€āļĄāļ·āđˆāļ­āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āđ€āļĢāļīāđˆāļĄāļ—āļģāļ‡āļēāļ™ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđ„āļ”āđ‰āļˆāļēāļāļ—āļļāļāļ—āļĩāđˆāđƒāļ™āđ‚āļ„āđ‰āļ” Rails

2

āļĢāļ°āļ”āļąāļš log āļ—āļąāđ‰āļ‡āļŦāđ‰āļēāļ—āļĩāđˆāļĄāļĩāđƒāļ™ Rails āļˆāļēāļāļĢāļ°āļ”āļąāļšāļ§āļīāļāļĪāļ•āļ™āđ‰āļ­āļĒāļ—āļĩāđˆāļŠāļļāļ”āđ„āļ›āļˆāļ™āļ–āļķāļ‡āļ§āļīāļāļĪāļ•āļĄāļēāļāļ—āļĩāđˆāļŠāļļāļ”āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

Rails āđƒāļŠāđ‰āļĢāļ°āļ”āļąāļš log āļĄāļēāļ•āļĢāļāļēāļ™āļŦāđ‰āļēāļĢāļ°āļ”āļąāļš āđ„āļ”āđ‰āđāļāđˆ debug (āļ‚āđ‰āļ­āļĄāļđāļĨāđ‚āļ”āļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļžāļąāļ’āļ™āļē), info (āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ—āļąāđˆāļ§āđ„āļ›), warn (āļ„āļģāđ€āļ•āļ·āļ­āļ™āļ—āļĩāđˆāđ„āļĄāđˆāļ‚āļąāļ”āļ‚āļ§āļēāļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™), error (āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ—āļĩāđˆāļāļđāđ‰āļ„āļ·āļ™āđ„āļ”āđ‰) āđāļĨāļ° fatal (āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļĢāđ‰āļēāļĒāđāļĢāļ‡āļ—āļĩāđˆāļ—āļģāđƒāļŦāđ‰āļŦāļĒāļļāļ”āļ—āļģāļ‡āļēāļ™) āđāļ•āđˆāļĨāļ°āļĢāļ°āļ”āļąāļšāļˆāļ°āļāļĢāļ­āļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļĢāļ°āļ”āļąāļšāļ•āđˆāļģāļāļ§āđˆāļēāļ­āļ­āļāđ„āļ› āļ—āļģāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ›āļĢāļąāļšāļĢāļ°āļ”āļąāļšāļ„āļ§āļēāļĄāļĨāļ°āđ€āļ­āļĩāļĒāļ”āđ„āļ”āđ‰āļ•āļēāļĄ environment

3

āļˆāļ°āļāļģāļŦāļ™āļ”āļ„āđˆāļēāļĢāļ°āļ”āļąāļš log āđƒāļ™ production āļšāļ™ Rails āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

āļĢāļ°āļ”āļąāļš log āđƒāļ™ production āļ–āļđāļāļāļģāļŦāļ™āļ”āļ„āđˆāļēāđƒāļ™ config/environments/production.rb āļœāđˆāļēāļ™ config.log_level āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ„āļ·āļ­ :info āđ€āļžāļ·āđˆāļ­āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļĄāļēāļāđ€āļāļīāļ™āđ„āļ›āđƒāļ™ production āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰āļĒāļąāļ‡āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āļĢāļ°āļ”āļąāļšāđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļāļœāđˆāļēāļ™āļ•āļąāļ§āđāļ›āļĢ environment āđ€āļŠāđˆāļ™ ENV.fetch('RAILS_LOG_LEVEL', 'info').to_sym āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āļŠāļđāļ‡āļŠāļļāļ”āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡ deploy āđƒāļŦāļĄāđˆ

4

āļˆāļ°āļšāļąāļ™āļ—āļķāļ log āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļžāļĢāđ‰āļ­āļĄāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāļĄāļĩāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āđƒāļ™ Rails āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāđ„āļ”āđ‰āļ‡āđˆāļēāļĒāļ‚āļķāđ‰āļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

5

āļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Rails.logger.debug āđāļĨāļ° Rails.logger.debug { } āļ—āļĩāđˆāļĄāļĩ block āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

+17 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļŦāļąāļ§āļ‚āđ‰āļ­āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Ruby on Rails āļ­āļ·āđˆāļ™āđ†

āļžāļ·āđ‰āļ™āļāļēāļ™ Ruby

Junior
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļŠāļīāļ‡āļ§āļąāļ•āļ–āļļāđƒāļ™ Ruby

Junior
20 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ Rails

Junior
18 āļ„āļģāļ–āļēāļĄ

Routing & Controllers

Junior
22 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ ActiveRecord

Junior
25 āļ„āļģāļ–āļēāļĄ

Views āđāļĨāļ° ERB Templates

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāđ‚āļĒāļ‡āļ‚āļ­āļ‡ ActiveRecord

Mid-Level
24 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļŠāļ­āļšāļ–āļēāļĄ ActiveRecord āļ‚āļąāđ‰āļ™āļŠāļđāļ‡

Mid-Level
28 āļ„āļģāļ–āļēāļĄ

āļŸāļ­āļĢāđŒāļĄ Rails

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļ•āļ™āđāļĨāļ°āļāļēāļĢāļ­āļ™āļļāļāļēāļ•

Mid-Level
22 āļ„āļģāļ–āļēāļĄ

Asset Pipeline āļŠāļĄāļąāļĒāđƒāļŦāļĄāđˆāđāļĨāļ° frontend

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

āđ‚āļŦāļĄāļ” API āļ‚āļ­āļ‡ Rails

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļ”āđ‰āļ§āļĒ RSpec

Mid-Level
24 āļ„āļģāļ–āļēāļĄ

ActiveJob & Background Jobs

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

ActionCable & WebSockets

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

ActionMailer

Mid-Level
18 āļ„āļģāļ–āļēāļĄ

ActiveStorage

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢ Caching

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢ Migration āļ‚āļąāđ‰āļ™āļŠāļđāļ‡

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

Rails Engines āđāļĨāļ°āđāļ­āļ›āđāļšāļšāđ‚āļĄāļ”āļđāļĨāļēāļĢāđŒ

Senior
18 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļāļēāļĢāļ—āļģāļ‡āļēāļ™

Senior
26 āļ„āļģāļ–āļēāļĄ

Design Patterns āđƒāļ™ Rails

Senior
22 āļ„āļģāļ–āļēāļĄ

āđ€āļĄāļ•āļēāđ‚āļ›āļĢāđāļāļĢāļĄāļĄāļīāļ‡āđƒāļ™ Ruby

Senior
20 āļ„āļģāļ–āļēāļĄ

āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļ‚āļ­āļ‡ Rails

Senior
22 āļ„āļģāļ–āļēāļĄ

GraphQL āļāļąāļš Rails

Senior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ”āļĩāļžāļĨāļ­āļĒāđāļĨāļ°āđ‚āļ›āļĢāļ”āļąāļāļŠāļąāļ™

Senior
20 āļ„āļģāļ–āļēāļĄ

āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢāļ­āļąāļ›āđ€āļāļĢāļ” Rails

Senior
18 āļ„āļģāļ–āļēāļĄ

āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ Ruby on Rails āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ„āļĢāļąāđ‰āļ‡āļ–āļąāļ”āđ„āļ›

āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āļģāļ–āļēāļĄāļ—āļąāđ‰āļ‡āļŦāļĄāļ” flashcards āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„ āđāļšāļšāļāļķāļāļŦāļąāļ” code review āđāļĨāļ°āļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļĢāļīāđˆāļĄāđƒāļŠāđ‰āļŸāļĢāļĩ