[Thinknetica] ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ ΠΠΎΡΠΈΡΠΎΠ² β ΠΠ΅ΠΏΠ»ΠΎΠΉ Ruby on Rails ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker Swarm ΠΈ MRSK 2023
[Thinknetica] ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ ΠΠΎΡΠΈΡΠΎΠ² β ΠΠ΅ΠΏΠ»ΠΎΠΉ Ruby on Rails ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker Swarm ΠΈ MRSK (2023)
ΠΡΠΎΡ Π²ΠΎΡΠΊΡΠΎΠΏ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ mrsk Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Ruby on Rails ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Docker ΠΏΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅.
ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΡΡΠΎΠΈΡΡ ΡΡ Π΅ΠΌΡ Π΄Π΅ΠΏΠ»ΠΎΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ΄-ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ±ΡΡΠ½ΠΎ ΠΌΡ Π΄Π΅ΠΏΠ»ΠΎΠΈΠΌ Π½Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ capistrano. ΠΡΡ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π²Π΅ΡΡΠΈΡ Π ΡΠ±ΠΈ. ΠΠ° Π²ΠΎΡΠΊΡΠΎΠΏΠ΅ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker, ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π½Π°Π»ΠΎΠ³ capistrano 2023 Π³ΠΎΠ΄Π° β mrsk
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
ΠΠ΅Π½Ρ 1. ΠΠΎΠΊΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Rails ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ±ΡΠ°Π·, ΡΠ΅Π³ΠΈΡΡΡ
Dockerfile
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ
ΠΏΠΎΡΡ
Π²ΠΎΠ»ΡΡΠΌ
docker-compose
ΡΠ±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Ruby on Rails
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ:
ΠΡΠ²Π΅ΠΆΠΈΡΠ΅/ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ Docker, Π½Π°ΡΡΠΈΡΠ΅ΡΡ Π΄ΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ.
ΠΠ΅Π½Ρ 2. ΠΠ΅ΠΏΠ»ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ docker swarm
ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ docker swarm
Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°
Π΄Π΅ΠΏΠ»ΠΎΠΉ
ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅
Π»ΠΎΠ³ΠΈ
ΡΠΊΠ΅ΠΉΠ»ΠΈΠ½Π³
ΡΠ°Π·Π΄Π°ΡΠ° ΡΡΠ°ΡΠΈΠΊΠΈ
Π΄Π΅ΠΏΠ»ΠΎΠΉ Ρ gitlab ci
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ
Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ nginx
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ:
ΠΠ°ΡΡΠΈΡΠ΅ΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker Swarm. ΠΠ°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠ΅Π½Ρ 3. ΠΠ΅ΠΏΠ»ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mrsk
ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ mrsk
Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°
Π΄Π΅ΠΏΠ»ΠΎΠΉ
ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅
Π»ΠΎΠ³ΠΈ
ΡΠΊΠ΅ΠΉΠ»ΠΈΠ½Π³
ΡΠ°Π·Π΄Π°ΡΠ° ΡΡΠ°ΡΠΈΠΊΠΈ
Π΄Π΅ΠΏΠ»ΠΎΠΉ Ρ gitlab ci
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ:
ΠΠ°ΡΡΠΈΡΠ΅ΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mrsk. ΠΠ°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠ° Π²ΡΠ΅ΠΌΡ Π²ΠΎΡΠΊΡΠΊΠΎΠΏΠ° Π²Ρ:
ΠΠ°ΡΡΠΈΡΠ΅ΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΠ΅Ρ-ΠΎΠ±ΡΠ°Π·Ρ Π΄Π»Ρ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π‘ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mrsk
Π‘ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ docker swarm
ΠΠΎΠΉΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π²Π΅ΡΡΠΈΠΈ Ruby ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΅Π·Π΄ΠΎΠΌ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Ρ ΠΎΡΡΠΈΠ½Π³.
ΠΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ Π² ΡΠ²ΠΎΠΉ Π°ΡΡΠ΅Π½Π°Π» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠΎΡ Π²ΠΎΡΠΊΡΠΎΠΏ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ mrsk Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Ruby on Rails ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Docker ΠΏΡΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅.
ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΡΡΠΎΠΈΡΡ ΡΡ Π΅ΠΌΡ Π΄Π΅ΠΏΠ»ΠΎΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ΄-ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ±ΡΡΠ½ΠΎ ΠΌΡ Π΄Π΅ΠΏΠ»ΠΎΠΈΠΌ Π½Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ capistrano. ΠΡΡ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π²Π΅ΡΡΠΈΡ Π ΡΠ±ΠΈ. ΠΠ° Π²ΠΎΡΠΊΡΠΎΠΏΠ΅ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker, ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π½Π°Π»ΠΎΠ³ capistrano 2023 Π³ΠΎΠ΄Π° β mrsk
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
ΠΠ΅Π½Ρ 1. ΠΠΎΠΊΠ΅ΡΠΈΠ·Π°ΡΠΈΡ Rails ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ±ΡΠ°Π·, ΡΠ΅Π³ΠΈΡΡΡ
Dockerfile
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ
ΠΏΠΎΡΡ
Π²ΠΎΠ»ΡΡΠΌ
docker-compose
ΡΠ±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Ruby on Rails
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ:
ΠΡΠ²Π΅ΠΆΠΈΡΠ΅/ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ Docker, Π½Π°ΡΡΠΈΡΠ΅ΡΡ Π΄ΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΊΠ΅ΡΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ.
ΠΠ΅Π½Ρ 2. ΠΠ΅ΠΏΠ»ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ docker swarm
ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ docker swarm
Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°
Π΄Π΅ΠΏΠ»ΠΎΠΉ
ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅
Π»ΠΎΠ³ΠΈ
ΡΠΊΠ΅ΠΉΠ»ΠΈΠ½Π³
ΡΠ°Π·Π΄Π°ΡΠ° ΡΡΠ°ΡΠΈΠΊΠΈ
Π΄Π΅ΠΏΠ»ΠΎΠΉ Ρ gitlab ci
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ
Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ nginx
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ:
ΠΠ°ΡΡΠΈΡΠ΅ΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Docker Swarm. ΠΠ°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠ΅Π½Ρ 3. ΠΠ΅ΠΏΠ»ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mrsk
ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ mrsk
Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°
Π΄Π΅ΠΏΠ»ΠΎΠΉ
ΡΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅
Π»ΠΎΠ³ΠΈ
ΡΠΊΠ΅ΠΉΠ»ΠΈΠ½Π³
ΡΠ°Π·Π΄Π°ΡΠ° ΡΡΠ°ΡΠΈΠΊΠΈ
Π΄Π΅ΠΏΠ»ΠΎΠΉ Ρ gitlab ci
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ:
ΠΠ°ΡΡΠΈΡΠ΅ΡΡ Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mrsk. ΠΠ°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠ° Π²ΡΠ΅ΠΌΡ Π²ΠΎΡΠΊΡΠΊΠΎΠΏΠ° Π²Ρ:
ΠΠ°ΡΡΠΈΡΠ΅ΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΠ΅Ρ-ΠΎΠ±ΡΠ°Π·Ρ Π΄Π»Ρ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π‘ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mrsk
Π‘ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π΅ΠΏΠ»ΠΎΠΈΡΡ Rails-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ docker swarm
ΠΠΎΠΉΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π²Π΅ΡΡΠΈΠΈ Ruby ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΅Π·Π΄ΠΎΠΌ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Ρ ΠΎΡΡΠΈΠ½Π³.
ΠΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ Π² ΡΠ²ΠΎΠΉ Π°ΡΡΠ΅Π½Π°Π» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
favorite
0
star
0
