ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ: Windows , | Windows 7 Windows 10
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Android ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ
ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΡΠ°Π±ΠΎΡΡ, Π½ΠΎ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π° Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡ ΡΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΠΎ ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ β Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ Π±ΡΡΡΡΠΎ ΡΠ°Π·ΡΡΠΆΠ°Π΅ΡΡΡ. ΠΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ Π½ΠΈΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈ Π΄ΡΡΠ³Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Π»ΠΈΡΡΡΠ°Ρ Π½Π° Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡΡ ΠΈ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠΌΡ Π΅ΠΉ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΠ½Π΄ΡΠΎΠΈΠ΄, ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ, Π° Ρ Π΄ΡΡΠ³ΠΎΠΉ β ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ΄ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΡ Π½ΡΠ°Π½ΡΠΎΠ². ΠΠΎ Π²ΡΠ΅ΠΌ ΡΡΠΎΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΈΡΠΏΡΡΡΠ²Π°ΡΡ Π΄ΠΈΡΠΊΠΎΠΌΡΠΎΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΠΌΠ°ΡΡΡΠΎΠ½Π°.
ΠΠ΅Π· Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Π½ΠΎ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π° Π·Π°ΡΡΠ΄Π΅ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ°
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
Π‘ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π½ΡΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½Π°Ρ Π·Π½Π°ΠΊΠΎΠΌΡ ΠΏΠΎ ΠΎΠΏΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Windows.
ΠΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π²ΡΠ΅ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΡΡΠ½ΠΎ: Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ β Π·Π½Π°ΡΠΈΡ, ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°. Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΎΠΊΠ½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ
Π² ΡΠΏΠΈΡΠΎΠΊ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
β‘ ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΡ Π½Π° Androidinsider Π² ΠΠ·Π΅Π½Π΅, Π³Π΄Π΅ ΠΌΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ
ΠΠ° Android ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ½Π°ΡΠ΅ Ρ ΠΎΡΡ Π±Ρ ΠΏΠΎ ΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΡΡΠΎ ΠΌΡΠ»ΡΡΠΈΠΎΠΊΠΎΠ½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½ ΠΈΠ·-Π·Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΊΡΠ°Π½Π°. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Π°Ρ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ, Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ. Π’ΠΎΡΠ½Π΅Π΅ ΠΌΡ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π΅Π΅ ΠΎΠΊΠ½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌ Π·Π°Π΄Π°ΡΠΈ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
Π Π΅ΠΆΠΈΠΌ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π΅ΡΠ΅ ΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΠ΄Π°Π»Π΅Π½Π° ΠΈΠ· Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠ»Π°Π²Π½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ β ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ Π²ΡΠ΄Π°Π½ΠΎ, ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ: Π½Π΅ ΠΏΡΠΈΡ
ΠΎΠ΄ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ, ΡΠΌΠ°ΡΡ-ΡΠ°ΡΡ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΎΡ ΠΠ½Π΄ΡΠΎΠΈΠ΄ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΠΏΡΠΈΠ·Π²Π°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΡΠΏΡΡΡΠ²Π°Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² Π²ΠΎΠΏΡΠΎΡΠ΅, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ. ΠΡΡΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ»ΡΡΡΠΈΡΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠΎΡ ΡΠΎΠ³Π΄Π° Π΅ΡΡΡ ΡΠΌΡΡΠ» ΡΠ΄Π°Π»ΠΈΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ· Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠ°.
π₯ ΠΠ°Π³Π»ΡΠ½ΠΈ Π² ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π» Π‘ΡΠ½Π΄ΡΠΊ ΠΠ»ΠΈ-ΠΠ°Π±Ρ, Π³Π΄Π΅ ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ Π»ΡΡΡΠΈΠ΅ ΡΠΎΠ²Π°ΡΡ Ρ ΠΠ»ΠΈΠΠΊΡΠΏΡΠ΅ΡΡ
ΠΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ
Π ΡΡΠ½ΠΊΡΠΈΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠ° Π½ΡΠΆΠ΄Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π±Π΅Π· ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. ΠΡΠΎ Π·Π²ΠΎΠ½ΠΈΠ»ΠΊΠΈ, Π±ΡΠ΄ΠΈΠ»ΡΠ½ΠΈΠΊΠΈ, ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅ΡΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΌΠ°ΡΡΡΠΎΠ½Ρ ΠΏΠ΅ΡΠΈΡΠ΅ΡΠΈΠΉΠ½ΠΎΠΉ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΡΠΌΠ°ΡΡ-ΡΠ°ΡΠΎΠ².
ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ ΡΡΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠΎ Π²Ρ ΡΠΈΡΠΊΡΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π²Π°ΠΆΠ½ΡΠΉ Π·Π²ΠΎΠ½ΠΎΠΊ ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ-ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅ΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²
ΠΠΏΡΠΎΡΠ΅ΠΌ, Π²ΡΠ΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎ ΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π²Π·ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π½Π° ΠΌΠΎΠ΅ΠΌ ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ Telegram ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π±Π΅Π· Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ Ρ ΡΠΌΠ½ΡΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ WhatsApp ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π·Π²ΠΎΠ½ΠΊΠΈ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ. ΠΠΎΡΡΠΎΠΌΡ Telegram Ρ ΠΈΡΠΊΠ»ΡΡΠ°Ρ ΠΈΠ· Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ, Π° WhatsApp β Π½Π΅Ρ.
β ΠΠΎΠ΄Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π·Π°Π΄Π°ΠΉ Π²ΠΎΠΏΡΠΎΡ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΡΠ°ΡΠ΅
ΠΠ΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ Π²Π°ΠΌ. ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π²ΡΠ΅ Π»ΠΈΡΠ½Π΅Π΅: ΠΈΠ³ΡΡ, ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠΈΠ½ΠΎΡΠ΅Π°ΡΡΡ ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ. ΠΡΡΠ°Π²ΡΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ
Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ, Π½ΠΎ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ Π΅Π΅ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΎ Π½Π΅ ΠΏΡΠΈΠ½Π΅ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½, ΡΡΠΎ ΡΠΊΠ°ΠΆΠ΅ΡΡΡ Π½Π° Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡΠΈ.
ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΠΎΡ ΠΌΡ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π»ΠΈΡΡ ΠΊ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΠ½Π΄ΡΠΎΠΈΠ΄. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ:
- ΠΡΠΊΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°.
- ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΡΠ°Π·Π΄Π΅Π» Β«ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ», Π° Π·Π°ΡΠ΅ΠΌ β Β«Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΒ».
- ΠΡΠΊΡΡΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΡ Β«ΠΠ²ΡΠΎΠ·Π°ΠΏΡΡΠΊΒ».
- ΠΡΠΊΠ»ΡΡΠΈΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ.
ΠΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π½ΡΠΆΠ΅Π½
ΠΠ±ΡΠ°ΡΠ°Ρ Π²Π°ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ ΠΌΠ΅Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΉ. ΠΠ° Xiaomi ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ Β«Π Π°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ». ΠΠ³ΠΎ ΡΡΠΎΠΈΡ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ.
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠΈΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠ°
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π΅ Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠ΅Π· Β«ΡΡΠΈ ΡΠΎΡΠΊΠΈΒ» Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΡ Β«ΠΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ». Π’Π°ΠΊ Ρ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ·Π½Π°Π», ΡΡΠΎ Π½Π° ΠΌΠΎΠ΅ΠΌ ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Β«ΠΠ°ΠΌΠ΅ΡΠ°Β». Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π² ΡΡΠΎΠΌ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
β‘ ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΡ Π½Π° Androidinsider Π² ΠΡΠ»ΡΡ Mail.ru, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΈΠ· ΠΌΠΈΡΠ° ΠΠ½Π΄ΡΠΎΠΈΠ΄ ΠΏΠ΅ΡΠ²ΡΠΌ
Π’Π°ΠΊΠΆΠ΅ ΡΠ±ΡΠ°ΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ ΠΠ½Π΄ΡΠΎΠΈΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΡΠΎΠ΄Π΅ All-In-One Toolbox:
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π» Β«ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ°Β».
- ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ΅Π· ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΡΠΎΠ½ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠΊΠ°Π·ΠΎΠΌ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΠ΄ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ All-In-One Toolbox ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ ΠΈ Π°ΠΊΠΊΡΡΠ°ΡΠ½Ρ, ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΠΎΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² Windows 10
06.10.2021 β’ 1 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
Π’Π²ΠΈΡΠ½ΡΡΡ
Pin
ΠΡΠΏΡ. ΠΏΠΎ ΡΠ». ΠΏΠΎΡΡΠ΅
SMS
ΠΠ°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈ Π΄ΠΎΠ»Π³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ, ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π»Π΅Π·ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ? ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°ΡΡΠΈ-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² Windows 10.
ΠΡΠΎΡΠ΅ΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΈ Π½Π΅ Π·Π°ΠΉΠΌΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ΅ Π·Π°Π΄Π°Ρ, Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠΌ.
ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ Π² Windows 10
ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²ΠΈΠ½Π΄ΠΎΠ²Ρ 10 Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ΅ Π·Π°Π΄Π°Ρ ΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π Windows XP ΠΈ Windows 7 Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π³Π»ΡΠ±ΠΎΠΊΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, Π½Π°ΠΉΡΠΈ Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«msconfigΒ». ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ Ρ ΡΠ°Π½Π΅Π΅ ΠΏΠΈΡΠ°Π» Π² ΡΡΠ°ΡΡΠ΅ ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π²ΠΈΠ½Π΄ΠΎΡΡ.
ΠΡΠΎ Π½Π΅ Π»ΡΠ±ΠΈΡ ΡΠΈΡΠ°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ΅ΡΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π½Π° ΠΏΡΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ Π²Π½ΠΈΠ·Ρ ΡΠΊΡΠ°Π½Π° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅Π½Ρ ΠΏΡΡΠΊ, ΠΈΠΊΠΎΠ½ΠΊΠ°ΠΌΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. ΠΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΎΠΊΠ½Π΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ.
ΠΡΠ»ΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ°Π½Π΅Π»Ρ Π·Π°Π΄Π°Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ, ΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Β«Ctrl + Alt + DeleteΒ».
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ°Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΡΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΠΉΡΠΈ ΠΈ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ. ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅.
ΠΡΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ, ΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ β task manager.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΡΠΊΡΡΠ»Π°ΡΡ ΡΡΠ΅Π·Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ°, ΡΠΎ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅, Π²Π½ΠΈΠ·.
ΠΠΎΡΠ²ΠΈΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ Ρ 7 Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ, Π½Π°ΠΌ Π½ΡΠΆΠ½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ° ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ°. ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΡΠΈ Π»ΡΠ±ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ΅.
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Ρ ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· 16 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, 6 ΠΈΠ· Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ΅. ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΠΌΠ΅Π½Ρ ΡΠΎ ΡΡΠ΅Π΄Π½ΠΈΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π½Π° SSD, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠ»Π°Π±ΡΠΉ ΠΠ ΠΈΠ»ΠΈ Π½ΠΎΡΡΠ±ΡΠΊ, ΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ, Π° Π½ΡΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Π² Π½ΠΈΡ .
ΠΠ°Π²Π°ΠΉΡΠ΅ Ρ ΠΎΡΠΊΠ»ΡΡΡ Cortana, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΠΌΠΎΡΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅. ΠΡΠ΄Π΅Π»ΡΠ΅ΠΌ Π΅Ρ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ ΡΠΏΡΠ°Π²Π° Π²Π½ΠΈΠ·Ρ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ. ΠΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΏΡΠ°Π²ΠΎΠΉ ΠΌΡΡΡΡ Π½Π° ΠΠΎΡΡΠ°Π½Ρ ΠΈ Π²ΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ.
ΠΠΎΡΠ»Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Cortana ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΡΡ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π½Π° ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΎ.
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ΅, ΡΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅ Π½ΡΠΆΠ½ΡΡ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π²ΠΊΠ»ΡΡΠΈΡΡ. ΠΡΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°.
ΠΡΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ β Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠΈΡΠΊ
ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΠ΅Π½Ρ ΠΏΡΡΠΊ β ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ β ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π»ΠΈΡΡ ΠΏΡΠΈ Π²Ρ ΠΎΠ΄Π΅. Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠ½ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² ΡΠ²Π΅ΡΠ½ΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈΠ»ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°ΡΡ.
ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΠΎΠ»Π·ΡΠ½ΠΎΠΊ Π½Π° ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΈΠ»ΠΈ ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΎ.
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠΌ Π²ΠΎΠ·Π»Π΅ ΠΌΠ΅Π½Ρ ΠΏΡΡΠΊ, Π³Π΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π·Π΄Π΅ΡΡ ΡΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ°Π±ΠΈΡΠ°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° β Π½Π°ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠΎΠ²Π°Π»ΠΈΠ²Π°Π΅ΠΌΡΡ Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠΎΠ΄ ΡΠ΅Π±Ρ.
ΠΡΠΎΠ³ΠΈ
ΠΡ Ρ Π²Π°ΠΌΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² Windows 10, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΎΠΌ Π·Π°Π΄Π°Ρ, Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠΈΡΠΊΠΎΠΌ. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Cortana.
ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½ΡΠΆΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠ»Π°Π±ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΡΠΎ ΠΎΡΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ Π²ΡΠ΅.
ΠΡΡΡ ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π½ΠΈΠΆΠ΅.
ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° Π½Π°Ρ ΠΊΠ°Π½Π°Π»Β ΡΠ½Π΄Π΅ΠΊΡ Π΄Π·Π΅Π½Β ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ Π½Π°Β ΡΡΡΠ±Π΅.
Π‘ ΡΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ,Β ΠΠΌΠΈΡΡΠΈΠΉ Π‘Π΅ΡΠ³Π΅Π΅Π²Β 6 ΠΎΠΊΡΡΠ±ΡΡ 2021
ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ Π±Π»ΠΎΠ³Ρ
ΠΠΎΠ»ΡΡΠ°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π²ΡΠΏΡΡΠΊΠΈ Π½Π° ΠΏΠΎΡΡΡ
ΠΠ°ΠΊΠΈΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ?
ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ, ΠΊΠ°ΠΊ ΡΡ ΡΡΠΎ Π²ΡΡΠ°Π·ΠΈΠ». ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈ ΠΎΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΠ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΎ-ΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π²Π°ΠΌ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½ΠΈΡ .
Π― Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Π°ΠΌ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ. Π― Π³ΠΎΠ²ΠΎΡΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ, Π½ΠΎ Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ Π·Π°ΠΊΠΎΠ½Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΠΈΡΠ½ΠΎ ΠΌΠ½Π΅ Π½ΡΠ°Π²ΡΡΡΡ WinZip ΠΈ Photoshop, Π½ΠΎ ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡ
ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅ ΠΊΡΡΠΎΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ.
Π§ΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ?
* ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ ΠΈ Π±ΡΠ°Π½Π΄ΠΌΠ°ΡΡΡ. ΠΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΠ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π°.
* ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½ΠΎΡΡΠ±ΡΠΊ, ΡΠΎ ΠΎΠ½ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΠ΅Π» Ρ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ, ΡΠ»Π΅Π΄ΡΡΠΈΠΌ Π·Π° Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΎ ΡΡΠΎΠΈΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ.
* ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ-ΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΡΠ° Π·Π²ΡΠΊΠΎΠ²Π°Ρ ΠΊΠ°ΡΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π±Π΅Π· Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°. ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ, ΡΠ°ΠΊ Π»ΠΈ ΡΡΠΎ.
* ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. Π Π½ΠΈΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ Copernic Desktop Search, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈ VistaStartMenu, ΡΠ»ΡΡΡΠ°ΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Windows.
Π‘ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, ΡΡΠΎΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π·Π°ΡΡΠ°Ρ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ Π»ΡΠ±ΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΎΡΠΊΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ. Π XP Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Β«ΠΡΡΠΊΒ», Β«ΠΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡΒ», Β«Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅Β», Β«Π‘Π»ΡΠΆΠ΅Π±Π½ΡΠ΅Β», Β«ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡΒ». ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠΊΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΠ°Π»Π΅Π΅ ΠΈ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠΌ ΠΌΠ°ΡΡΠ΅ΡΠ° . Π Vista Π½Π°ΠΆΠΌΠΈΡΠ΅ Start, Π²Π²Π΅Π΄ΠΈΡΠ΅ sysdm.cpl ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ENTER . Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ System Protection , Π·Π°ΡΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ Create .
ΠΠ΄ΡΠ°Π²ΡΠΉ ΡΠΌΡΡΠ» ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π°ΠΌ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ Π² msconfig, Π½ΠΎ ΡΡΠΎ Π½Π΅ Π»ΡΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ
Π½Π°ΡΠΈΠ½Π°ΡΡ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΡΡΠΎ ΡΠ΅Π°Π³ΠΈΡΡΡΡ Π½Π° ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠ΅ΠΉ Β«ΠΎΡΠΈΠ±ΠΊΠΈΒ». ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΎΡΡΠ°Π²Π°Π»ΡΡ Π²ΡΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ, ΡΠΎΠΎΠ±ΡΠΈΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ msconfig.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°Π½Π΅Π»Ρ Π·Π°Π΄Π°Ρ. ΠΠ°Π²Π΅Π΄ΠΈΡΠ΅ ΠΊΡΡΡΠΎΡ ΠΌΡΡΠΈ Π½Π° Π·Π½Π°ΡΠΎΠΊ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅.
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΌΡΡΠ»Π° Π² Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Π·Π½Π°ΡΠΎΠΊ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ,
Preferences, ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΈΠ· ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΠΈΡ
ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΌΠ΅Π½Ρ. ΠΡΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΌ. ΠΠ·ΡΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅Π½Ρ ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠ΅ ΠΎΠΊΠ½Π° Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ. Π‘Π½ΠΈΠΌΠΈΡΠ΅ Π²ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ².
ΠΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π·Π°ΠΉΡΠΈ Π² msconfig. ΠΠ΅ Π²ΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΡΡΠ΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅, ΠΈ Π½Π΅ Π²ΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π·Π½Π°ΡΠΎΠΊ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΡΠ΅ΠΉ. ΠΡΠ°ΠΊ, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Start, Run (ΠΏΡΠΎΡΡΠΎ Start Π² Vista) , Π²Π²Π΅Π΄ΠΈΡΠ΅ msconfig ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ENTER . ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡ Startup .
ΠΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅ΠΉΡΠ°Ρ, ΡΡΠΎ ΡΠ½ΡΡΡ ΡΠ»Π°ΠΆΠΊΠΈ Ρ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ, ΠΈ Π½Π°Π΄Π΅ΡΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΡΡΠ°Π½ΡΡΡΡ Π½Π΅ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° http://www.sysinfo.org/startuplist.php.
ΠΡΠΈΡΡΠ»Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌ ΠΌΠ½Π΅ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ [email protected] ΠΈΠ»ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ ΠΈΡ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π»ΡΠ΄Π΅ΠΉ Π½Π° ΡΠΎΡΡΠΌΠ΅ PCW Answer Line.
ΠΠΎΠ½ΡΡΠ°Π½ΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ β Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ Ruby on Rails
1 ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ°, ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ Π°ΠΊΡΠΈΠ²Π½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Rails.
Π ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Ruby Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΡ ApplicationController 9.0080 ΠΈ ΠΡΠΏΡΠ°Π²ΡΡΠ΅ , ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ Π½ΠΈΡ
:
# ΠΠ ΠΠΠΠΠΠ’Π ΠΠ’ΠΠΠ.
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ "application_controller"
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ "ΠΏΠΎΡΡ"
# ΠΠ ΠΠΠΠΠ ΠΠ’Π.
ΠΊΠ»Π°ΡΡ PostsController < ApplicationController
ΠΈΠ½Π΄Π΅ΠΊΡ Π·Π°ΡΠΈΡΡ
@posts = ΠΏΠΎΡΡ.
Π²ΡΠ΅
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Rails, Π³Π΄Π΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π΅Π·Π΄Π΅:
class PostsController < ApplicationController
ΠΈΠ½Π΄Π΅ΠΊΡ Π·Π°ΡΠΈΡΡ
@posts = ΠΏΠΎΡΡ.Π²ΡΠ΅
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Idiomatic Rails Π²ΡΠ΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ , ΡΡΠ΅Π±ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΈΠ· ΠΈΡ
ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° lib , ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ruby, Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π½ΡΡ
ΠΊΠ°ΠΌΠ½Π΅ΠΉ Ruby ΠΈ Ρ. Π΄. Π’ΠΎ Π΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΈΡ
ΠΏΡΡΡΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π½ΠΈΠΆΠ΅.
Π§ΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Rails ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ°ΡΠΎΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ² Zeitwerk ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
2 Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Rails ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌ ΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌ, Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠ» app/helpers/users_helper.rb Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ UsersHelper , Π° ΡΠ°ΠΉΠ» app/controllers/admin/payments_controller.rb Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Admin::PaymentsController .
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Rails Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ Zeitwerk Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ String#camelize . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ app/controllers/users_controller.rb ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ UsersController , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ:
"users_controller".camelize # => UsersController
Π ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠ΅Π³ΠΈΠ±ΠΎΠ² Π½ΠΈΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Zeitwerk.
3 config.autoload_paths
ΠΡ ΡΡΡΠ»Π°Π΅ΠΌΡΡ Π½Π° ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΡΠΎΡΡΡ
Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ ΠΈ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ) ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠΎΠ΄Π΅Π»ΠΈ . Π’Π°ΠΊΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½: Object .
ΠΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΊΠΎΡΠ½Π΅Π²ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Zeitwerk, Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° Β«ΠΏΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈΒ».
Π ΠΏΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π·Π΄Π΅ΡΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· Π²ΡΠ΅Ρ
ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ --- Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ² , javascript ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ --- ΠΏΠ»ΡΡ ΠΏΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Π΅ΠΉ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ UsersHelper ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² app/helpers/users_helper.rb , ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΌ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ (ΠΈ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ) Π²ΡΠ·ΠΎΠ² require Π΄Π»Ρ Π½Π΅Π³ΠΎ:
$ bin/ ΡΠ΅Π»ΡΡΠΎΠ²ΡΠΉ Π±Π΅Π³ΡΠ½ 'p UsersHelper' UsersHelper
Rails Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π² app Π² ΠΏΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ/ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΎΡΠΎΠ² , Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΎΡΠΎΠ²; ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ.
ΠΠ°ΡΡΠΈΠ² ΠΏΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ ΠΏΡΡΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° config.autoload_paths , Π² config/application. ΠΈΠ»ΠΈ
rb config/environments/*.rb . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΌΠΎΠ΄ΡΠ»Ρ MyApplication
ΠΊΠ»Π°ΡΡ Application < Rails::Application
config.autoload_paths << "#{root}/extras"
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
Π’Π°ΠΊΠΆΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ΅Π»ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π²ΠΈΠΆΠΊΠ° ΠΈ Π² ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ config/environments/*.rb .
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΠΌΡΡΠΈΡΡΠΉΡΠ΅ ActiveSupport::Dependencies.autoload_paths ; ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ β config.autoload_paths .
ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΊΠΎΠ΄ Π² ΠΏΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΡΠΌΠΎ Π² config/initializers/*.rb . ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΠΈΠΆΠ΅, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ Rails.autoloaders.main .
4 config.autoload_once_paths
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Ρ
ΠΎΡΠ΅ΡΡ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±Π΅Π· ΠΈΡ
ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ autoload_once_paths Ρ
ΡΠ°Π½ΠΈΡΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ΅Π½.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΏΡΡΡΠ°, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π΅Π΅, Π½Π°ΠΆΠ°Π² config.autoload_once_paths . ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π² config/application.rb ΠΈΠ»ΠΈ config/environments/*.rb . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΌΠΎΠ΄ΡΠ»Ρ MyApplication
ΠΊΠ»Π°ΡΡ Application < Rails::Application
config.autoload_once_paths << "#{root}/app/serializers"
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
Π’Π°ΠΊΠΆΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ΅Π»ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π²ΠΈΠΆΠΊΠ° ΠΈ Π² ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ config/environments/*.rb .
ΠΡΠ»ΠΈ app/serializers ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½Ρ Π² config.autoload_once_paths , Rails Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΠΈΡΠ°Π΅Ρ ΡΡΠΎΡ ΠΏΡΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ Π² app . ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ ΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ.
ΠΡΠΎ ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΡΡΠΈΡΡΡΡΡΡ Π² ΠΌΠ΅ΡΡΠ°Ρ
, Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ
ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ°ΠΌΠΎΠΉ ΡΡΠ΅Π΄Π΅ Rails.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ Active Job Ρ ΡΠ°Π½ΡΡΡΡ Π²Π½ΡΡΡΠΈ Active Job:
# config/initializers/custom_serializers.rb Rails.application.config.active_job.custom_serializers << MoneySerializer
ΠΈ ΡΠ°ΠΌ Active Job Π½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅, ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄Π²ΠΈΠΆΠΊΠΎΠ² Π² ΠΏΡΡΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ.
Π‘Π΄Π΅Π»Π°ΡΡ MoneySerializer ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΌ Π±ΡΠ»ΠΎ Π±Ρ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ°, Ρ
ΡΠ°Π½ΡΡΠΈΠΉΡΡ Π² Active Job. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ MoneySerializer Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΌ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Rails 7 ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΏΠΎΠ΄Π½ΡΠ» Π±Ρ ΠΡΠΈΠ±ΠΊΠ° ΠΈΠΌΠ΅Π½ΠΈ .
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ β ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΈΠΆΠΊΠΈ ΡΠΊΡΠ°ΡΠ°ΡΡ ΠΊΠ»Π°ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°:
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ "Π΄Π΅ΠΊΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ActionController::Base" Π΄Π΅Π»Π°ΡΡ
ActiveSupport.on_load(:action_controller_base) Π΄Π΅Π»Π°ΡΡ
Π²ΠΊΠ»ΡΡΠΈΡΡ MyDecoration
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΠ΄Π΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠ΄ΡΠ»Ρ, Ρ
ΡΠ°Π½ΡΡΠΈΠΉΡΡ Π² MyDecoration , ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΠ΅Π΄ΠΊΠΎΠΌ ActionController::Base , ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° MyDecoration Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½Π°, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΡΠ΅Π΄ΠΊΠΎΠ².
ΠΠ»Π°ΡΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈΠ· ΠΏΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Π² config/initializers . ΠΡΠ°ΠΊ, Ρ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
# config/initializers/custom_serializers.rb Rails.application.config.active_job.custom_serializers << MoneySerializer
Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· , Π² Π»ΡΠ±ΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ :bootstrap_hook .
ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΡΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Rails.autoloaders.once .
5 $LOAD_PATH
ΠΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊ $LOAD_PATH ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π²Π½ΡΡΡΠΈ Zeitwerk ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ΄Π°Π²Π°ΡΡ , ΡΡΠ΅Π±ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ Ρ ΡΡΠΈΠΌ ΡΠ»Π°Π³ΠΎΠΌ:
config.add_autoload_paths_to_load_path = false
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΊΠΎΡΠΈΡΡ Π·Π°ΠΊΠΎΠ½Π½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ , ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Bootsnap, ΡΡΠΎ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΎΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΌΠ΅Π½ΡΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
6 ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ°
Rails Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΡΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ.
Π’ΠΎΡΠ½Π΅Π΅, Π΅ΡΠ»ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΠΈ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ, Rails Π²ΡΠ³ΡΡΠΆΠ°Π΅Ρ Π²ΡΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ , Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ»Π°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, Π±ΡΠ΄ΡΡ ΡΠ½ΠΎΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠ΄Ρ
Π²Π°ΡΡΠ²Π°Ρ ΠΈΡ
ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΡΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, β config.cache_classes , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ false Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° Π²ΠΊΠ»ΡΡΠ΅Π½Π°) ΠΈ true ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π° (ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°).
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Rails ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΡΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ°ΠΉΠ»Π°Ρ
. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΡΠ΅ΠΌ ΠΎΠ±Ρ
ΠΎΠ΄Π° ΠΏΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΡΡ config.file_watcher 9ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° 0080.
Π ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Rails Π½Π΅Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ Π·Π° ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ config.cache_classes . ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠΎΠ΄Π° Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΠ΅Π°Π½ΡΠ° ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΡΠ°Π½ΠΈΡΠ΅. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ, ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π½Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π»ΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠΌ, Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ reload! :
irb(main):001:0> User.object_id => 701362773 irb(main):002:0> ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ! ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ°... => ΠΏΡΠ°Π²Π΄Π° irb(main):003:0> User.object_id => 70136284426020
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ°, Ρ
ΡΠ°Π½ΡΡΠΈΠΉΡΡ Π² ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ User , ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
6.1 ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π² Ruby Π½Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΎΡΡΠ°Π·ΠΈΡΡ ΡΡΠΎ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Β«ΡΠ°Π·Π³ΡΡΠ·ΠΊΠ°Β» 9ΠΠ»Π°ΡΡ 0079 User ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ User ΡΠ΅ΡΠ΅Π· Object.send(:remove_const, "User") .
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΠΎΡ ΡΠ΅Π°Π½Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Rails:
irb> joe = User.new ΠΈΡΠ±> ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ! irb> ΠΠ»ΠΈΡΠ° = User.new irb> joe.class == alice.class => Π»ΠΎΠΆΡ
joe ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° User . ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° User ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ. alice ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ User , Π° joe β Π½Π΅Ρ β Π΅Π³ΠΎ ΠΊΠ»Π°ΡΡ ΡΡΡΠ°ΡΠ΅Π». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ½ΠΎΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ joe , Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠ±ΡΠ΅Π°Π½Ρ IRB ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π° reload! .
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ, β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΌΠ΅ΡΡΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ:
# lib/vip_user.rb ΠΊΠ»Π°ΡΡ VipUser < ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ½Π΅Ρ
Π΅ΡΠ»ΠΈ ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ, Ρ.ΠΊ. VipUser Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΠΎΠΌ VipUser , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠΎΠ³: Π½Π΅ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ .
7 ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΈΠ· ΠΏΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ Once . ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°Π·Π΄Π΅Π» config.autoload_once_paths Π²ΡΡΠ΅.
ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΡ Ρ ΠΏΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ. ΠΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠΎΠ΄Ρ Π² config/initializers , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π΄Π²ΠΈΠΆΠΊΠΎΠ².
ΠΠΎΡΠ΅ΠΌΡ? ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ, ΠΎΠ½ΠΈ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° Π½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π·Π°ΠΏΡΡΡΡΡΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
7.1 ΠΠ°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 1: Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠ΄
7.1.1 ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ApiGateway β ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ/ΡΠ»ΡΠΆΠ± , ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ , ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
# config/initializers/api_gateway_setup.rb ApiGateway.endpoint = "https://example.com" # ΠΠ ΠΠΠΠΠΠ’Π ΠΠ’ΠΠΠ
ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ApiGateway Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ nil , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ.
ΠΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π²Π΅ΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π½ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΠΈΡ
Π² Π±Π»ΠΎΠΊ to_prepare , ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ:
# config/initializers/api_gateway_setup.rb Rails.application.config.to_prepare ΡΠ΄Π΅Π»Π°ΡΡ ApiGateway.endpoint = "https://example.com" # ΠΠ ΠΠΠΠΠ¬ΠΠ ΠΊΠΎΠ½Π΅Ρ
ΠΠΎ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΡΡΠΎΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΡΠΌ.
7.1.2 ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅
ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Π² Π±Π»ΠΎΠΊΠ°Ρ
after_initialize . ΠΠ½ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅, Π½ΠΎ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠ½ΠΎΠ²Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ.
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ:
# config/initializers/check_admin_presence.rb
Rails.application.config.after_initialize ΡΠ΄Π΅Π»Π°ΡΡ
Π΅ΡΠ»ΠΈ Π ΠΎΠ»Ρ.Π³Π΄Π΅(ΠΈΠΌΡ: "admin").ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ?
Abort "Π ΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
."
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
7.2 ΠΠ°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 2: Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ°Π΅ΡΡΡ Π² ΠΊΡΡΠ΅
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π΅Π³ΠΎ Π² ΠΌΠ΅ΡΡΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΠ:
config.middleware.use MyApp::Middleware::Foo
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΡΠ΅ΠΊ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠΎΡ
ΡΠ°Π½Π΅Π½ Π² MyApp::Middleware::Foo Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ.
ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ Active Job:
# config/initializers/custom_serializers.rb Rails.application.config.active_job.custom_serializers << MoneySerializer
ΠΡΠ΅, ΡΡΠΎ MoneySerializer ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ. ΠΡΠ»ΠΈ Π±Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΌ, ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΡΡ Π±Ρ Π² Active Job, Π½Π΅ ΠΎΡΡΠ°ΠΆΠ°Ρ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π»ΡΡΡ ΠΈΠ»ΠΈ Π΄Π²ΠΈΠΆΠΊΠΈ, ΡΠΊΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΏΡΡΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, turbo-rails ΡΠΊΡΠ°ΡΠ°Π΅Ρ ActiveRecord::Base ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ "turbo.broadcastable" do ActiveSupport.on_load(:active_record) ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ Turbo::Broadcastable ΠΊΠΎΠ½Π΅Ρ ΠΊΠΎΠ½Π΅Ρ
ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ActiveRecord::Base . ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Turbo::Broadcastable Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ΅, ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ.
Π‘Π»Π΅Π΄ΡΡΠ²ΠΈΠ΅: ΠΡΠΈ ΠΊΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡ .
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΡ
Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΏΡΡΡΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, lib β ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΡΠ±ΠΎΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΏΡΡΡΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ, Π½ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ $LOAD_PATH . ΠΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠΉ , ΡΡΠ΅Π±ΡΡΡΠΈΠΉ , ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΅Π³ΠΎ.
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ Π²ΡΡΠ΅, Π΄ΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΡ Π² ΠΏΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎ config.autoload_once_paths.
8 ΠΠ΅ΡΠ΅ΡΠΏΠ΅Π»ΠΈΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ°
Π ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΡΠ΅Π΄Π°Ρ
ΠΎΠ±ΡΡΠ½ΠΎ Π»ΡΡΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅ΡΠ΅ΡΠΏΠ΅Π»ΠΈΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ Π² ΠΏΠ°ΠΌΡΡΡ, Π³ΠΎΡΠΎΠ²ΡΡ ΠΊ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄ΠΎΠ±Π½Π° Π΄Π»Ρ CoW.
ΠΠ΅ΡΠ΅ΡΠΏΠ΅Π»ΠΈΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π°Π³ΠΎΠΌ config.eager_load , ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ production .
ΠΠΎΡΡΠ΄ΠΎΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½.
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π±ΡΡΡΡΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Rails Π²ΡΠ·ΡΠ²Π°Π΅Ρ Zeitwerk::Loader.eager_load_all . ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π½ΡΡ
ΠΊΠ°ΠΌΠ½Π΅ΠΉ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Zeitwerk, ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Ρ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ.
9 ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ»ΠΎΡ ΠΎ ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. ΠΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅Π³ΠΎ API ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ STI Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π»Π΅Π½ΠΈΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π° Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°Π½Π° ΡΡΡΠ»ΠΊΠ°. ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΡΠΎ, Π½Π° ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ»Π°Π»ΠΈΡΡ.
Π ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΠΌΡΡΠ»Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ STI Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅, ΡΡΠΎ ΡΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ. ΠΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΡΠΈΠΏΠΎΠ² Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
, ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Ρ
ΠΎΡΠΎΡΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ°Ρ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ β Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ STI Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ lib :
module StiPreload
Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Rails.application.config.eager_load
ΡΠ°ΡΡΠΈΡΠΈΡΡ ActiveSupport::Concern
Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π΄Π΅Π»Π°ΡΡ
cattr_accessor: ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½, instance_accessor: false
ΠΊΠΎΠ½Π΅Ρ
class_methods Π΄Π΅Π»Π°ΡΡ
Π΄Π΅Ρ ΠΏΠΎΡΠΎΠΌΠΊΠΈ
preload_sti, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π·Π°Π³ΡΡΠΆΠ΅Π½ Π·Π°ΡΠ°Π½Π΅Π΅
ΡΡΠΏΠ΅Ρ
ΠΊΠΎΠ½Π΅Ρ
# ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈΠ·ΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠΈΠΏΡ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π°
# Π΄ΠΈΡΠΊ, Π½ΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ STI API
# ΠΎΠ±Π΅ΡΠΏΠΎΠΊΠΎΠ΅Π½Π½ΡΠΉ.
#
# ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ store_full_sti_class ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π·Π°ΡΠΈΡΠ° preload_sti
ΡΠΈΠΏΡ_Π²_Π΄Π± = \
Π±Π°Π·ΠΎΠ²ΡΠΉ_ΠΊΠ»Π°ΡΡ.
Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ.
Π²ΡΠ±Π΅ΡΠΈΡΠ΅ (inheritance_column).
ΠΎΡΡΠ΅ΡΠ»ΠΈΠ²ΡΠΉ.
ΡΡΡΠ²Π°ΡΡ (inheritance_column).
ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ
types_in_db.each Π΄Π΅Π»Π°ΡΡ |ΡΠΈΠΏ|
logger.debug("ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΈΠΏΠ° STI #{ΡΠΈΠΏ}")
type.constantize
ΠΊΠΎΠ½Π΅Ρ
self.preloaded = ΠΏΡΠ°Π²Π΄Π°
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
, Π° Π·Π°ΡΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΠΊΠΎΡΠ½Π΅Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ STI Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
# app/models/shape.rb ΡΡΠ΅Π±ΡΠ΅ΡΡΡ "sti_preload" ΡΠΎΡΠΌΠ° ΠΊΠ»Π°ΡΡΠ° < ApplicationRecord include StiPreload # Π’ΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΊΠΎΠ½Π΅Ρ
# ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠΎΠ΄Π΅Π»ΠΈ/polygon.rb ΠΊΠ»Π°ΡΡ ΠΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ < Π€ΠΎΡΠΌΠ° ΠΊΠΎΠ½Π΅Ρ
# ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠΎΠ΄Π΅Π»ΠΈ/ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ.ΡΠ± ΠΊΠ»Π°ΡΡ Π’ΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ < ΠΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΊΠΎΠ½Π΅Ρ
10 ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠ΅Π³ΠΈΠ±ΠΎΠ²
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Rails ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ String#camelize , ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, posts_controller.rb Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ PostsController , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ "posts_controller"..
camelize
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ, ΡΡΠΎ html_parser.rb ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ HtmlParser . Π§ΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΠΊΠ»Π°ΡΡ HTMLParser ? ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎ.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΡ:
ActiveSupport::Inflector.inflections(:en) ΡΠ΄Π΅Π»Π°ΡΡ |inflect| inflect.Π°ΠΊΡΠΎΠ½ΠΈΠΌ "HTML" inflect.Π°ΠΊΡΠΎΠ½ΠΈΠΌ "SSL" ΠΊΠΎΠ½Π΅Ρ
ΠΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Active Support. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Ρ ΠΎΡΠΎΡΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΈΠΌΠ΅Π½ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Active Support, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π½Π°Π±ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΈΠ½ΡΠ»Π΅ΠΊΡΠΎΡΠ°ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
Rails.autoloaders.each do |autoloader|
Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ.inflector.inflect(
"html_parser" => "HTMLParser",
"ssl_error" => "SSLError"
)
ΠΊΠΎΠ½Π΅Ρ
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ String#camelize , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΈΠ½ΡΠ»Π΅ΠΊΡΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°.
ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Active Support ΠΈ ΠΈΠΌΠ΅ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΠΈΠ½ΡΠ»Π΅ΠΊΡΠΎΡΡ ΠΊΠ°ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Zeitwerk::Inflector :
Rails.autoloaders.each do |autoloader|
autoloader.inflector = Zeitwerk::Inflector.new
Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ.inflector.inflect(
"html_parser" => "HTMLParser",
"ssl_error" => "SSLError"
)
ΠΊΠΎΠ½Π΅Ρ
ΠΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ³Π»Π° Π±Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ; ΠΎΠ½ΠΈ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΡ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ»Π΅ΠΊΡΠΎΡ Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Zeitwerk.
10.1 ΠΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π³ΠΈΠ±Ρ?
ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ ΠΏΠΎΡΠ»Π΅ , ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² config/initializers . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, config/initializers/inflections.rb Π΄Π»Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Active Support ΠΈΠ»ΠΈ config/initializers/zeitwerk. Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
.
rb
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ Once , Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΈΠ»ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈΠ· ΡΠ΅Π»Π° ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² config/application.rb , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊ Once ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ»Π΅ΠΊΡΠΎΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ.
11 ΠΠ²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ
ΠΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΠΈΡ
ΠΊΠΎΠ΄ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ, ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌ zeitwerk , ΠΊΠΎΠ΄ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ zeitwerk . ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ classic , ΠΊΠΎΠ΄ ΡΠ΄ΡΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ classic .
ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Rails ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π΄Π²ΠΈΠΆΠΊΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊ ΠΏΡΡΡΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΈ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ° ΡΠ°Π·Π½ΠΈΡΡ Π½Π΅Ρ. ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²Ρ
ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΡΠΈ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΠΎΠ½ΠΈ Π΄Π΅ΡΠ΅Π²Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΌΡ-Π»ΠΈΠ±ΠΎ Π΄Π΅ΡΠ΅Π²Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π²ΠΈΠΆΠΊΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Devise:
% bin/rails runner 'pp ActiveSupport::Dependencies.autoload_paths' [".../ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ", ".../ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ/ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ", ".../ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΈ", ".../ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠΎΠ΄Π΅Π»ΠΈ", ".../ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΌΠΎΠ΄Π΅Π»ΠΈ/ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ", ".../Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ/ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ-4.8.0/ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ", ".../Π΄ΡΠ°Π³ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ/ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ-4.8.0/ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅/ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΈ", ".../gems/devise-4.8.0/app/mailers"]
ΠΡΠ»ΠΈ Π΄Π²ΠΈΠΆΠΎΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π²ΠΈΠΆΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Rails 6 ΠΈΠ»ΠΈ Rails 6.1 ΠΈ Π½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π³ΠΎΡΠΎΠ² ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Π² Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΈΠ»ΠΈ zeitwerk . Π§ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ:
ΠΡΠ»ΠΈ Π² ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅
ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²require_dependency, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π΅Π΅.
ΠΠΎΠΊΠ° zeitwerkΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ, Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ, Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅zeitwerk.ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π°-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ (Β«ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΒ» -> Β«user.rbΒ»), Π° ΡΠ΅ΠΆΠΈΠΌzeitwerkΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π΅Ρ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² (Β«user.rbΒ» -> Β«ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΒ»). ΠΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², Π½ΠΎ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΡΡΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π³Π»Π°Π²Π½ΡΡ Π±ΡΠΊΠ², ΠΊΠ°ΠΊ Π² Β«HTMLParserΒ». Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π±ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌ β ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ°ΠΊΠΈΡ ΠΈΠΌΠ΅Π½. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Β«HtmlParserΒ».Π ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅
Π² ΡΠ°ΠΉΠ»Π΅app/model/concerns/foo.rbΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠ°ΠΊFoo, ΡΠ°ΠΊ ΠΈConcerns::Foo. Π ΡΠ΅ΠΆΠΈΠΌΠ΅zeitwerkΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ: ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡFoo. ΠΠ»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Foo.
12 Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
12.1 Π ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°Π΄Π°ΡΠ° zeitwerk:check ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π»ΠΈ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ
, ΠΈ ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ ΡΡΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΠ΅ Ρ classic to zeitwerk mode, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠΎ-ΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅:
% bin/rails zeitwerk:check ΠΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅, Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ!
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ "ΠΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ!" ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΈΡΠ΅ΡΠ΅.
12.2 ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π² Π½Π°Π±ΠΎΡΠ΅ ΡΠ΅ΡΡΠΎΠ² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Zeitwerk ΠΈ Π΄ΡΡΠ³ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π»ΠΈΠ²ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² Π²Π΅ΡΡΠΈΠΈ 9.0025 Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Rails .
13 Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ
ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ, β ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ β Π²ΠΊΠ»ΡΡΠΈΡΡ:
Rails.autoloaders.log!
Π² config/application.rb ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ Π²Π΅ΡΡΠΈ ΠΆΡΡΠ½Π°Π» Π² ΡΠ°ΠΉΠ», Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΡΡΠΎ:
Rails.autoloaders.logger = Logger.new("#{Rails.root}/log/autoloading.log")
Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΎΡ Rails Π΅ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ config/application.rb . ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΎΡ Rails, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ΅:
# config/initializers/log_autoloaders.rb Rails.autoloaders.logger = Rails.logger
14 Rails.autoloaders
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Zeitwerk, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
Rails.autoloaders.main Rails.autoloaders.once
ΠΡΠ΅Π΄ΠΈΠΊΠ°Ρ:
Rails.autoloaders.zeitwerk_enabled?
ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
Rails 7 ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true .
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ
ΠΠ°ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΏΠΎΠΌΠΎΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²Π½Π΅ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄, Π΅ΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.

Π²ΡΠ΅
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
rb
ΠΊΠ»Π°ΡΡ VipUser < ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΊΠΎΠ½Π΅Ρ
to_prepare ΡΠ΄Π΅Π»Π°ΡΡ
ApiGateway.endpoint = "https://example.com" # ΠΠ ΠΠΠΠΠ¬ΠΠ
ΠΊΠΎΠ½Π΅Ρ
on_load(:active_record) ΡΠ΄Π΅Π»Π°ΡΡ
Π²ΠΊΠ»ΡΡΠΈΡΡ Turbo::Broadcastable
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ.
Π²ΡΠ±Π΅ΡΠΈΡΠ΅ (inheritance_column).
ΠΎΡΡΠ΅ΡΠ»ΠΈΠ²ΡΠΉ.
ΡΡΡΠ²Π°ΡΡ (inheritance_column).
ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ
types_in_db.each Π΄Π΅Π»Π°ΡΡ |ΡΠΈΠΏ|
logger.debug("ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΈΠΏΠ° STI #{ΡΠΈΠΏ}")
type.constantize
ΠΊΠΎΠ½Π΅Ρ
self.preloaded = ΠΏΡΠ°Π²Π΄Π°
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΊΠΎΠ½Π΅Ρ
ΠΠΎΠΊΠ°