Как внСсти Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² windows 7: Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Windows 7, 10

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Как Π·Π°ΠΉΡ‚ΠΈ Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Виндовс 7

ВсС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Windows 7 со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π·Π°ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ Π·Π°Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. На ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ функционирования ПК Π²Π»ΠΈΡΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ: ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΡƒΡŽΡ‰Π΅Π³ΠΎ оборудования, дСйствиС врСдоносных вирусных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π³Ρ€ΠΎΠΌΠΎΠΆΠ΄Π΅Π½Π½ΠΎΡΡ‚ΡŒ памяти Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ бСсполСзными прилоТСниями ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ПК.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  1. Основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Windows 7
  2. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ способ Π²Ρ…ΠΎΠ΄Π°
  3. Бпособ Π²Ρ…ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡƒΡŽ строку
  4. На Ρ‡Ρ‚ΠΎ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅
  5. Бпособ Π²Ρ…ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ рССстра
  6. Бпособ Π²Ρ…ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ
  7. ВмСсто Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Windows 7

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ такая прямая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ: Ρ‡Π΅ΠΌ большСС количСство ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ устанавливаСт Π² Виндовс 7, Ρ‚Π΅ΠΌ дольшС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ, ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Ρ‡Π°Ρ‰Π΅ ΠΏΠΎΠ΄Π²ΠΈΡΠ°Ρ‚ΡŒ. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ Π²ΠΎ врСмя инсталляции Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² список Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя этот ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ становится ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΌ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ автозапуска Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания, ΠΈΠ½Π°Ρ‡Π΅ ПК Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΎ руководство ΠΎ располоТСнии Π² Π’ΠΈΠ½ 7 ссылок Π½Π° автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ прилоТСния ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих вопросов трСбуСтся Π·Π°ΠΉΡ‚ΠΈ Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ОБ Windows 7.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ способ Π²Ρ…ΠΎΠ΄Π°

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список автозапуска сущСствуСт Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅:

  1. ΠΠ°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΡƒΡΠΊΒ»;
  2. Π”Π°Π»Π΅Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ курсор Π½Π° строкС «ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹Β»;
  3. Π—Π°Ρ‚Π΅ΠΌ Π² появившСмся ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° «Автозагрузка».

Но, ΠΊ соТалСнию, Π² этом спискС Π½Π΅ прСдставлСн ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.

Бпособ Π²Ρ…ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡƒΡŽ строку

ВрСбуСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

  1. Π§Π΅Ρ€Π΅Π· ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΡƒΡΠΊΒ» Π² поисковой строкС Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Β«msconfigΒ»;
  2. Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠ²ΡˆΡƒΡŽΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ;
  3. Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»Π°Π΄ΠΊΡƒ «Автозагрузка»;
  4. Π“ΠΎΡ‚ΠΎΠ²ΠΎ! Π—Π΄Π΅ΡΡŒ находится ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ список.

На Ρ‡Ρ‚ΠΎ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

НС рСкомСндуСтся Ρ‚ΠΎΡ€ΠΎΠΏΠΈΡ‚ΡŒΡΡ с ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ всСх слуТб, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π΅Π· Ρ€Π°Π·Π±ΠΎΡ€Π°, Ρ‚.ΠΊ. ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ слуТбы, Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π’ΠΈΠ½ 7.

НС слСдуСт ΡΠΏΠ΅ΡˆΠΈΡ‚ΡŒ ΠΈ с прилоТСниями, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ· пСрСчня Β«Π‘ΠΊΠ°ΠΉΠΏΠ°Β», ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅ сообщСниС ΠΈ Ρ‚.ΠΏ. НСнуТныС ΠΈ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, слСдуСт ΡƒΠ±Ρ€Π°Ρ‚ΡŒ, Π° Π² случаС нСобходимости ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ автозапуск вновь, вСдь ΠΎΠ½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π°, Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π² Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ.

Бпособ Π²Ρ…ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ рССстра

Иногда приходится ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ особоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС. Часто Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΡƒΡ‡Π°Ρ‚ свои ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ слуТб ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, поэтому ΠΎΠ½ΠΈ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π² рассмотрСнных Π²Ρ‹ΡˆΠ΅ пСрСчнях автозапуска ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ рССстра Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Β«Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹Β».

Π‘ этой Ρ†Π΅Π»ΡŒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

  1. УдСрТивая ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«WinΒ» ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° Β«RΒ», ΠΏΡ€ΠΈ этом появится мСню Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΒ»;
  2. Π”Π°Π»Π΅Π΅ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Β«regeditΒ» ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° Β«EnterΒ»;
  3. Π—Π°Ρ‚Π΅ΠΌ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ рССстра Π²ΠΎΠΉΡ‚ΠΈ Π² Β«HKEY CURRENT USERΒ»;
  4. ΠŸΠΎΡ‚ΠΎΠΌ слСдуСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Β«SoftwareΒ» ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Β«MicrosoftΒ»;
  5. ПослС этого Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° Β«WindowsΒ» ΠΈ Π΄Π°Π»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Β«CurrentVersionΒ» ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Β«RunΒ»;
  6. Π“ΠΎΡ‚ΠΎΠ²ΠΎ! Π—Π΄Π΅ΡΡŒ находится ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π½Ρ‹ΠΉ список.

Бпособ Π²Ρ…ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŽΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

ΠšΡ€ΠΎΠΌΠ΅ описанных Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сущСствуСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ прилоТСния ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· автозапуска Windows 7 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Β«CCleanerΒ».

ΠŸΡ€ΠΎΡΡ‚ΠΎ трСбуСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° Β«Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹Β»;
  2. Π”Π°Π»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ «Автозагрузка»;
  3. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ просто трСбуСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«Π’Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΒ».

ВмСсто Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

НСобходимо Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прилоТСниях ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΡ… настройки ΠΈ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ «АвтоматичСски Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ вмСстС с WindowsΒ».

Как Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² Windows 7, 8, 10.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ обсудим, ΠΊΠ°ΠΊ быстро ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Windows 10, 8, 7 Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Autorun Organizer.

Часто ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ: Ρ‚Ρ€Π΅ΠΉ справа Π²Π½ΠΈΠ·Ρƒ, Π²ΠΎΠ·Π»Π΅ часов, Π·Π°Π±ΠΈΡ‚ ΠΊΡƒΡ‡Π΅ΠΉ ΠΈΠΊΠΎΠ½ΠΎΠΊ ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΡˆΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π·Π°Ρ‡Π΅ΠΌ Π΅ΠΌΡƒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡ΠΊΠΎΠ² (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ) постоянно Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π½Π° стартС Windows, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ разводят Ρ€ΡƒΠΊΠ°ΠΌΠΈ:

  1. Они сами ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ.
  2. Π’Π°ΠΊ всСгда ΠΈ Π±Ρ‹Π»ΠΎ.
  3. Π― Ρ‚ΡƒΠ΄Π° Π½Π΅ ΡΠΌΠΎΡ‚Ρ€ΡŽ.
  4. Π£ мСня ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ ΠΌΠ½Π΅ всё Ρ€Π°Π²Π½ΠΎ.

Π—Π΄Π΅ΡΡŒ Π²ΠΈΠ΄Π½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 3 Π·Π½Π°Ρ‡ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ лишниС для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° сколько Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΡΠΏΡ€ΡΡ‚Π°Π»ΠΈΡΡŒ ΠΈ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ своСго Π²ΠΈΠ΄Π°?

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ адрСсу https://www.chemtable.com/ru/autorun-organizer.htm

БистСмныС трСбования Ρƒ Π½Π΅Π΅ Ρ‚Π°ΠΊΠΈΠ΅:

  • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма: Microsoft Windows 10 / 8 / 7 / Vista / XP (32- ΠΈ 64-разрядныС)
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ: ΠΎΡ‚ 256 Мб
  • ДисковоС пространство: 50 Мб
  • ΠŸΡ€Π°Π²Π° администратора

На Ρ„Π°ΠΉΠ»Π΅ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΏΡ€Π°Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΊΠΈ.

И устанавливаСм ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора.

ΠŸΡ€ΠΈ установкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сайт VirusTotal для антивирусной ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π”Π°Π»Π΅Π΅ запускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° функция ΠΏΠΎΠΊΠ°Π·Π° Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² автозапускС, Ссли ΠΎΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Ρ‚ΠΎ сам Autorun Organizer Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΡΠ΅Ρ‚ΡŒ Ρƒ Вас Π² Ρ‚Ρ€Π΅Π΅ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ постоянно Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для Π·Π°Π±Ρ‹Π²Ρ‡ΠΈΠ²Ρ‹Ρ… людСй. МоТно просто всё Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Autorun Organizer Ρ€Π°Π· Π² мСсяц ΠΈΠ»ΠΈ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ. На рисункС Π²ΠΈΠ΄Π½ΠΎ, сколько Π°ΠΏΠ΄Π΅ΠΉΡ‚Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ висит Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΈ мониторят ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. Π‘ΠΏΡ€Π°Π²Π° Π·Π΅Π»Π΅Π½Ρ‹Π΅ полоски ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ²ΡˆΠΈΡ… эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΌΡ‹ΡˆΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ β€œΠ£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒβ€ слСва Π΅ΡΡ‚ΡŒ чСкбокс β€œΠ’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒβ€. МоТно смСло ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ всС подряд :-).

VirusTotal сразу ΠΏΠΈΡˆΠ΅Ρ‚ Π²Π°ΠΌ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π’Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»ΠΈ, опасная ΠΎΠ½Π° ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ справа Π²Π½ΠΈΠ·Ρƒ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠ° β€œΠ¦Π΅Π½Ρ‚Ρ€ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ измСнСний” ΠΈ всСгда ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚.

Π’ΠΎΡ‚ я нашСл ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Π°ΠΏΠ΄Π΅ΠΉΡ‚Π΅Ρ€ (ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ»ΡŒΡ‰ΠΈΠΊ πŸ™‚ ) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Lightshot, которая Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ ΠΈ для этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ‚ΠΎΠΆΠ΅. Π‘Π΅Ρ€Π΅ΠΌ ΠΈ просто удаляСм этот мусор ΠΈΠ· Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π”Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ЯндСкс-Π°ΠΏΠ΄Π΅ΠΉΡ‚Π΅Ρ€ΠΎΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ участниками Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Β 

Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Π½Π° свой вкус ΠΈ Ρ†Π²Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ дСйствуСтС.

Β 

Для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ этого Π±ΡƒΠ΄Π΅Ρ‚ достаточно, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ для внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Для Π±ΠΎΠ»Π΅Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… Π² сСбС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² мСню β€œΠ’ΡΠ΅ раздСлы” ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ слуТбы. Но Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎΡ‡Π΅Π½ΡŒ остороТны!!! НС ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ Π»Π΅Π·Ρ‚ΡŒ Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°.

Если Π½Π°ΠΏΠΎΡ€Ρ‚Π°Ρ‡ΠΈΠ»ΠΈ, Ρ‚ΠΎ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² β€œΠ¦Π΅Π½Ρ‚Ρ€ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ измСнСний”.

Β 

ВосстанавливаСм Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Вас.

Π Π΅ΡˆΠ°ΠΉΡ‚Π΅ сами ΠΊΠ°ΠΊ Π’Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½Π΅ΠΉ.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ сцСнарий использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… систСмных Π±Π»ΠΎΠΊΠ°Ρ… ΠΈΠ»ΠΈ Π² систСмном Π±Π»ΠΎΠΊΠ΅ ΠΈ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅. Π’ систСмном Π±Π»ΠΎΠΊΠ΅ установлСна Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π° Radeon ΠΈ Π·Π²ΡƒΠΊ ΠΎΡ‚ Creative, Π° Π² Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹ Intel ΠΈ Nvidia плюс Π·Π²ΡƒΠΊ Realtek.

На стационарС это ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Π° Π½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅ снова Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Windows Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся Π΅Ρ‰Π΅ ΠΊ Π΄Π²ΡƒΠΌ Π·Π½Π°Ρ‡ΠΊΠ°ΠΌ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚ Π² Ρ‚Ρ€Π΅Π΅.

НаТимаСм ΠΏΡ€Π°Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΊΠΈ ΠΈ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² панСль управлСния NVIDIA.

НаТимаСм Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол ΠΈ ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΎΠΊ Π² систСмной области.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ займСмся Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚ΠΎΠΉ Intel. НаТимаСм ΠΏΡ€Π°Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΊΠΈ Π½Π° Π·Π½Π°Ρ‡ΠΊΠ΅ Π² Ρ‚Ρ€Π΅Π΅.

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ГрафичСскиС характСристики…

Π”Π°Π»ΡŒΡˆΠ΅ ΠΊΠ°ΠΊ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π°Ρ….

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки.

ВсС эти настройки ΠΏΡ€ΠΈ надобности Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ чистыС систСмный Ρ‚Ρ€Π΅ΠΉ ΠΈ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° Π½Π°ΡˆΡƒ Π³Ρ€ΡƒΠΏΠΏΡƒ Π² VK  ЧИП-ЦЕНВР — восстановлСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π”ΠΎΠ½Π΅Ρ†ΠΊΠ΅

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

— require(vendor/autoload.php): Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ

Π§Π΅Π³ΠΎ Π²Π°ΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, Ρ‚Π°ΠΊ это Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ composer install , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ваши ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ создаст ΠΏΠ°ΠΏΠΊΡƒ поставщика вмСстС со сцСнариСм Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ. НапримСр, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ скриптов Π² PHPMailer находятся Π² examples/ , Π½ΠΈΠΆΠ΅ корня ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, поэтому ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ../vendor/autoload.php .

Autoload.php, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ нашли Π² C:\Windows\SysWOW64\vendor\autoload.php , вСроятно, являСтся глобальной установкой ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Π°, Π³Π΄Π΅ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ phpcs, phpunit, phpmd ΠΈ Ρ‚. Π΄.

ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Π° — это , Π° Π½Π΅ , Ρ‚ΠΎ ΠΆΠ΅ самоС, ΠΈ, вСроятно, , Π° Π½Π΅ , Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Если ваш ΠΊΠΎΠ΄ протСстирован с вашими Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌΠΈ вСрсиями ΠΏΠ°ΠΊΠ΅Ρ‚Π°, запуск с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сбоям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ тСстирования, поэтому Π½Π΅ запускайтС ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ , Ссли Ρƒ вас Π½Π΅Ρ‚ особой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈ Π²Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ β€” Π²Π°ΠΌ, вСроятно, слСдуСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ composer update Ρ‚ΠΎΠ»ΡŒΠΊΠΎ локально, Π° Π½Π΅ Π½Π° вашСм сСрвСрС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΠ»ΠΎΠΌΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² производствС.

Π― часто ΡΠ»Ρ‹ΡˆΡƒ ΠΆΠ°Π»ΠΎΠ±Ρ‹ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ люди Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ composer, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° своСм сСрвСрС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΈ Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ доступа ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅). Π’ этом случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€: запуститС Π΅Π³ΠΎ локально (срСда, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ) ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΈΠΌ ΠΏΠ°ΠΏΠΊΡƒ локального поставщика вмСстС со всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ вашими PHP-скриптами.

Запуск composer update Ρ‚Π°ΠΊΠΆΠ΅ выполняСт composer install , ΠΈ Ссли Ρƒ вас Π² настоящСС врСмя Π½Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΠΈ vendor (Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ свСТая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°), Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ создана, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ любой Ρ„Π°ΠΉΠ» composer.lock , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΌ, ΠΈ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасно.

Аналогично, Ссли Ρƒ вас Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‚ Ρ„Π°ΠΉΠ»Π° composer.lock (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΎΠ½ Π½Π΅ Π±Ρ‹Π» зафиксирован Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅), Ρ‚ΠΎ composer install Ρ‚Π°ΠΊΠΆΠ΅ эффСктивно выполняСт ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ composer . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ , Π° Π½Π΅ взаимозамСняСмы.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½Π°Π·Π²Π°Π² Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 composer update ramsey/uuid
 

Π­Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ Π²Π΅Ρ€ΡΠΈΡŽ, ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Π² вашСм composer.json , ΠΈ установит Π΅Π΅ Π² Π²Π°ΡˆΡƒ ΠΏΠ°ΠΏΠΊΡƒ поставщика, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ ваш composer.lock Ρ„Π°ΠΉΠ» для соотвСтствия. Π­Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ вСроятно Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Π° , Ссли Π²Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ , Π° Π½Π΅ собствСнный Ρ„Π°ΠΉΠ» composer.lock ; ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вСрсии Π΄ΠΎΠ»ΠΆΠ½Ρ‹ прилоТСния, Π° Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ оТидаСтся, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ хост-срСд, Ρ‡Π΅ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. НапримСр, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ совмСстима с Laravel 5, 6, 7 ΠΈ 8, Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π΅Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Laravel 8 ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.

Composer 2.0 устранил всС ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ нСсоотвСтствия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ установки ΠΈ обновлСния; Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ composer 1.x, Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ β€” Руководства ΠΏΠΎ Ruby on Rails

1 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ этом руководствС описаны Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ активная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π² прилоТСниях Rails.

Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ruby зависимости Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ классы ApplicationController 9.0004 ΠΈ ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ , ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для Π½ΠΈΡ…:

 # НЕ ДЕЛАЙВЕ Π­Π’ΠžΠ“Πž.
трСбуСтся "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 Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ поднял Π±Ρ‹ Ошибка ΠΈΠΌΠ΅Π½ΠΈ .

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования β€” ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΈΠΆΠΊΠΈ ΡƒΠΊΡ€Π°ΡˆΠ°ΡŽΡ‚ классы Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°:

 ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ "decorate ActionController::Base" do
  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 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ require для Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², поэтому эти ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π½Π° самом Π΄Π΅Π»Π΅ Ρ‚Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ с этим Ρ„Π»Π°Π³ΠΎΠΌ:

 config.add_autoload_paths_to_load_path = false
 

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π·Π°ΠΊΠΎΠ½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ мСньшС запросов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Bootsnap, это избавляСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΎΡ‚ создания Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… индСксов, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ использованию памяти.

6 ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°

Rails автоматичСски ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ классы ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ссли Ρ„Π°ΠΉΠ»Ρ‹ прилоТСния Π² путях Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ.

Π’ΠΎΡ‡Π½Π΅Π΅, Ссли Π²Π΅Π±-сСрвСр Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ прилоТСния Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹, Rails Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ всС Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ константы, управляСмыС основным Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ , нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ запроса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, классы ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΎ врСмя этого запроса, Π±ΡƒΠ΄ΡƒΡ‚ снова автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹, Ρ‚Π΅ΠΌ самым подхватывая ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС.

ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ этим ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, β€” config.cache_classes , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°) ΠΈ true ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ производства (ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°).

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Rails ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ событийный Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ для обнаруТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π°Ρ…. ВмСсто этого Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для обнаруТСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡƒΡ‚Π΅ΠΉ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π­Ρ‚ΠΎ контролируСтся config.file_watcher 9Настройка 0004.

Π’ консоли 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Класс 0003 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 β€” это ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹ΠΉ класс ΠΈΠ· app/services , управляСмый основным Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ , ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ прилоТСния:

 # 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 . Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ:

  1. Если классичСский Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° require_dependency , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ константы Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π΅. Пока zeitwerk Π½Π΅ понадобится, Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ zeitwerk .

  2. классичСский Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π°-константы ("User" -> "user.rb"), Π° Ρ€Π΅ΠΆΠΈΠΌ zeitwerk Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ°ΠΌΠ΅Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ("user. rb" -> "User"). Они ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, Π½ΠΎ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Ссли Π΅ΡΡ‚ΡŒ ряд ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π³Π»Π°Π²Π½Ρ‹Ρ… Π±ΡƒΠΊΠ², ΠΊΠ°ΠΊ Π² Β«HTMLParserΒ». Π‘Π°ΠΌΡ‹ΠΉ простой способ Π±Ρ‹Ρ‚ΡŒ совмСстимым β€” ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½. Π’ этом случаС Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«HtmlParserΒ».

  3. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ classic Ρ„Π°ΠΉΠ» 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.0031 Руководство ΠΏΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ 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 .

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь

Π’Π°ΠΌ прСдлагаСтся ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ качСство этого руководства.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, внСситС свой Π²ΠΊΠ»Π°Π΄, Ссли Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ фактичСскиС ошибки.
Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ наш Ρ€Π°Π·Π΄Π΅Π» Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹.
ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для main. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅
Edge Guides сначала ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅
Ссли ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡƒΠΆΠ΅ исправлСны ΠΈΠ»ΠΈ Π½Π΅Ρ‚ Π² основной Π²Π΅Ρ‚ΠΊΠ΅.
ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с руководством ΠΏΠΎ Ruby on Rails.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅: