ΠœΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€œΠΏΠΈΡˆΠ΅Ρ‚β€ ΠΊΠΎΠ΄ прямо Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅, ΠΈ Π² Ruby ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΌΡ‹ разбСрСмся с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Ruby прСдставляСт наши классы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Π·Π°Ρ‚Π΅ΠΌ β€” ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ наслСдованиС ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ПослС этого β€” ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ способам динамичСского объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠΉ ΠΈ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΎΠ² (Π±ΠΈΠ½Π΄ΠΈΠ½Π³ β€” это ΠΊΠ°ΠΊ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅, Π½ΠΎ Π±Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). НаконСц, ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания для созданиС своих собствСнных DSL (domain specific language): напишСм свой собствСнный Π³Π΅Ρ‚Ρ‚Π΅Ρ€, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ€ΠΎΡƒΡ‚Π΅Ρ€ ΠΈ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ActiveRecord. Π”ΠΎΠΊΠ»Π°Π΄ Π±ΡƒΠ΄Π΅Ρ‚ интСрСсСн ΠΊΠ°ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΠΌ Ruby–программистам (нас ΠΌΠ°Π»ΠΎ, я знаю!), Ρ‚Π°ΠΊ ΠΈ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ послС Π΄ΠΎΠΊΠ»Π°Π΄Π° Ρƒ Π½ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ язык. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ эту Ρ‚Π΅ΠΌΡƒ Π½Π΅ потрСбуСтся Π·Π½Π°Π½ΠΈΠ΅ синтаксиса Ruby β€” всё Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ прямо Π² процСссС Π΄ΠΎΠΊΠ»Π°Π΄Π°.