English version of README is here
Gem AssLauncher - ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ° ΠΏΠΎΠ²Π΅ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ v8 Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Ruby.
Π¦Π΅Π»Ρ AssLauncher - Π΄Π°ΡΡ Π² ΡΡΠΊΠΈ "1Π‘ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ" ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ, Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΡΠ·ΡΠΊ Ruby Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡ ΡΠ°Π±ΠΎΡΠ° ΡΡΠ°Π»Π° ΠΏΡΠΈΡΡΠ½Π΅Π΅ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½Π΅Π΅. ΠΠ°ΡΠ»Π°ΠΆΠ΄Π°ΠΉΡΠ΅ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Ruby :)
Π’Π΅ ΠΊΡΠΎ ΠΏΠΈΡΠ°Π» ΡΠΊΡΠΈΠΏΡΡ Π½Π° cmd Π·Π½Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅ ΡΡΠΎ ΡΠ½ΡΠ»ΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅. Π’Π΅ ΠΊΡΠΎ ΠΏΠΈΡΠ°Π» ΡΠΊΡΠΈΠΏΡΡ Π½Π° cmd Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘, Ρ ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ, Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π°Π½ΡΡΠΈΠ΅ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΡΠ»ΠΎΠ΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ΅. Π ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½ΠΈΠΊΡΠΎ, ΠΊΡΠΎ ΠΏΠΈΡΠ°Π» ΡΠ°ΠΊΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ, Π½Π΅ ΠΏΡΡΠ°Π»ΡΡ Π·Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ Π² Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠΈ.
AssLauncher ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ Π½Π°Π±ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ 1Π‘ ΠΈΠ· ΡΠ·ΡΠΊΠ° Ruby. AssLauncher Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΡΠ΅ΠΉ, ΠΏΠΎΠΈΡΠΊ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘ ΠΈ ΠΏΡΠΎΡΡΡ ΡΡΡΠΈΠ½Ρ Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΠ.
ΠΡΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ Π³ΡΡΠΏΠΏΡ. ΠΠ΅ΡΠ²Π°Ρ Π³ΡΡΠΏΠΏΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘:ΠΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΠ΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΡΠΎΡΠ°Ρ Π³ΡΡΠΏΠΏΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ 1Π‘ ΡΠ°Π½ΡΠ°ΠΉΠΌΡ ΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² 1Π‘ ΠΏΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ OLE(Com) ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ 1Π‘.
Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° Ruby ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠΊΠΈ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ 1Π‘. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ:
- ΡΠΊΡΠΈΠΏΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΡ Π·Π°Π΄Π°Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ 1Π‘ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
- Π²ΡΠ½ΠΎΡ ΡΠ°ΡΡΠΈ Π±ΠΈΠ·Π½Π΅Ρ/ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΠ· 1Π‘ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΠΎΠ½Ρ Ruby
- ΡΡΠΈΠ»ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ 1Π‘ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ² ΡΠ΅ΡΡΠΈΡΡΡΡΠΈΡ 1Π‘ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π° Π±Π°Π·Π΅ AssLauncher ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π½Π°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΠ±ΡΡΡ ΠΈΠ΄Π΅Ρ ΠΈΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Ruby Powered Workflow
AssLauncher ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ° ΡΠ°ΡΡΡ AssLauncher, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π΄ΠΎΡΡΡΠΏΡ ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ 1Π‘ ΡΠ΅ΡΠ΅Π· OLE(Com) ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Windows. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠ°Π±ΠΎΡΠ° ΡΠΎΠ»ΡΠΊΠΎ Ρ 32Ρ ΡΠ°Π·ΡΡΠ΄Π½ΡΠΌΠΈ OLE ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ 1Π‘ ΠΈΠ· 32Ρ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ Ruby.
ΠΠΈΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 64x ΡΠ°Π·ΡΡΠ΄Π½ΡΡ 1Π‘ OLE ΡΠ΅ΡΠ²Π΅ΡΠΎΠ².
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅:
- OC Widows ΡΡΠ°ΡΡΠ΅ Windows XP
- UNIX ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ cygwin. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ 32-Ρ ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ cygwin setup-x86.exe
- ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π² cygwin 32-Ρ ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ Ruby Π²Π΅ΡΡΠΈΠΈ ΡΡΠ°ΡΡΠ΅ 2.0
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ AssLauncher ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π²Π΅ΡΡΠΈΠΈ 0.3.0
, AssLauncher Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π½Π°Π±ΠΎΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²,
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡΡ ass-launcher
ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΡΠΈ:
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ 1Π‘ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΊΠ°ΠΊ "ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ Π±Π°Π·Π°"
- Π·Π°ΠΏΡΡΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΅Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ thick/thin/web ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈ designer ΠΎΠ½ ΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡ
- ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΏΡΠ°Π²ΠΊΡ ΠΏΠΎ CLI ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΅Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ thick/thin/web ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈ designer ΠΎΠ½ ΠΆΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡ
- ΠΈ ΠΊΠΎΠ΅-ΡΡΠΎ Π΅ΡΠ΅ ΡΠΌ.
ass-launcher --help
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ bundler:
- Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Gemfile ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ:
gem 'ass_launcher'
- Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ:
$ bundle
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ gem-Π°:
$ gem install ass_launcher
ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² gem-Π° Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΡΠΈΠ»ΠΈΡΠ° ass-launcer
$ ass-launcher --help
ΠΠ°Π·ΠΎΠ²ΡΠΉ Api AssLauncher Π²ΡΠ΄Π΅Π»Π΅Π½ Π² ΠΌΠΎΠ΄ΡΠ»Ρ AssLauncher::Api
. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎΡ
ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊΠ°ΠΊ mixin.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ AssLauncher::Api
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡ ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΄Π°ΠΌΠΏ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ).
ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ...
require 'ass_launcher'
# ΠΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠΈΠΉ Api AssLauncher
include AssLauncher::Api
def main(dupm_path)
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ±Π΅ΡΡΠΊΡ Π΄Π»Ρ ΡΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π²Π΅ΡΡΠΈΠΈ 8.3.8.+
thick_client = thicks('~> 8.3.8.0').last
# ΠΡΠ»ΠΈ AssLauncher Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΌΠ΅ΡΠΎΠ΄ thicks Π²Π΅ΡΠ½Π΅Ρ
# ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ², Π° ΠΏΡΡΡΠΎΠΉ_ΠΌΠ°ΡΡΠΈΠ².last Π²Π΅ΡΠ½Π΅Ρ nil
fail 'Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘ v8.3.8 Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°'\
' Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `ass-launcher env` Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
'
' Π²Π΅ΡΡΠΈΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘' if thick_client.nil?
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅
# "ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠ°" Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π·Π°ΠΏΡΡΠΊΠ°:
# - _S - ΠΏΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΠΠ - ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ° /S
# - dumpIB dump_path - Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ - ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ /DumpIB
designer = thick_client.command :designer do
_S 'enterprse_server/application_name'
dumpIB dupm_path
end
# ΠΠ°ΠΏΡΡΠΊΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΆΠ΄Π΅ΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ
designer.run.wait
# ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ
# verify! ΠΊΠΈΠ½Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
designer.process_holder.result.verify!
end
main ARGV[0]
ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ examples/ ΠΈ examples/troubles
Π‘ Π²Π΅ΡΡΠΈΠΈ 8.3.9
1Π‘ Π²ΡΠΏΡΡΡΠΈΠ»Π° x86_64 Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ Windows. ΠΠ»Ρ
Π²ΡΠ±ΠΎΡΠ° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ AssLauncher::Enterprise::BinaryWrapper
ΠΈΠΌΠ΅Π΅Ρ
ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ arch
ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ
ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ
ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π² ΠΌΠΎΠ΄ΡΠ»Π΅ AssLauncher::Api
ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ
Π΅Π»ΠΏΠ΅ΡΠΎΠ² Ρ ΡΡΡΡΠΈΠΊΡΠ°ΠΌΠΈ *_i386
ΠΈ *_x86_64
ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΆΠ΅
ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ².
ΠΠ»Ρ in-process OLE ΡΠ΅ΡΠ²Π΅ΡΠ° 1Π‘ v83.ComConnector
, ΡΠ°ΠΉΠ» comcntr.dll
, Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°
Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ΅ΡΠ²Π΅ΡΠ° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ
Ruby.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ x86_64 OLE ΡΠ΅ΡΠ²Π΅ΡΠ° 1Π‘, Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ (ΠΈΠ· Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌ
ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ
Π½ΠΈΠΆΠ΅). ΠΠ»Ρ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ x86_64 OLE ΡΠ΅ΡΠ²Π΅ΡΠ° 1Π‘
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»Π°Π³ use_x86_64_ole
ΠΊΠΎΠ½ΡΠΈΠ³Π° AssLauncher:
AssLauncher.configure do |conf|
conf.use_x86_64_ole = true
end
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ x86_64
ΡΠ΅ΡΠ²Π΅ΡΠ° v83.COMConnector
, Ruby ΡΠ΅ΡΠΏΠΈΡ ΠΊΡΠ°Ρ
ΠΏΡΠΈ
Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ΅ΡΠ²Π΅ΡΠ° connect
:
$ruby -v
ruby 2.3.6p384 (2017-12-14 revision 9808) [x86_64-cygwin]
$pry
RbConfig::CONFIG['arch'] #=> "x86_64-cygwin"
require 'win32ole'
inproc = WIN32OLE.new('V83.COMConnector')
inproc.connect('invalid connection string')
....*** buffer overflow detected ***: terminated
Aborted (ΡΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ±ΡΠΎΡΠ΅Π½ Π½Π° Π΄ΠΈΡΠΊ)
Π’ΠΎΡ ΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ i386
ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ:
$ruby -v
ruby 2.3.6p384 (2017-12-14 revision 9808) [i386-cygwin]
$pry
RbConfig::CONFIG['arch'] #=> "i386-cygwin"
require 'win32ole'
inproc = WIN32OLE.new('V83.COMConnector')
inproc.connect('invalid connection string')
WIN32OLERuntimeError: (in OLE method `connect': )
OLE error code:80004005 in V83.COMConnector.1
ΠΠ΅Π²Π΅ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ
HRESULT error code:0x80020009
Exception occurred.
from (pry):3:in `method_missing'
Π ΡΠ΅ΠΎΡΠΈΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° local OLE ΡΠ΅ΡΠ²Π΅ΡΠ°, Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ in-process ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½Π΅ Π²Π°ΠΆΠ½Π° Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Ρ.Π΅. Ruby, ΡΠ°ΠΊ ΠΊΠ°ΠΊ local OLE ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΎΡΠΈΠΈ. ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ examples/ Π² i386
Ruby
Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ x86_64
ΡΠ΅ΡΠ²Π΅ΡΡ v83.Application
Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅
ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ
Π±Π°Π·ΠΎΠΉ:
WIN32OLERuntimeError: (in OLE method `connect': )
OLE error code:0 in <Unknown>
<No Description>
HRESULT error code:0x80010108
The object invoked has disconnected from its clients.
/tmp/ass_launcher/lib/ass_launcher/enterprise/ole/win32ole.rb:87:in `method_missing'
/tmp/ass_launcher/lib/ass_launcher/enterprise/ole/win32ole.rb:87:in `call'
/tmp/ass_launcher/lib/ass_launcher/enterprise/ole/win32ole.rb:87:in `block in <class:WIN32OLE>'
/tmp/ass_launcher/lib/ass_launcher/enterprise/ole.rb:142:in `__try_open__'
/tmp/ass_launcher/lib/ass_launcher/enterprise/ole.rb:136:in `__open__'
/tmp/ass_launcher/examples/enterprise_ole_example.rb:131:in `block (4 levels) in <module:EnterpriseOle>'
ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ Π΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ issue Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ question
.
ΠΠ»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ° yadr
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ AssLauncher Π² ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Ρ ΡΠ΅Π»ΠΈΠ·Π°ΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘
ΠΠ΄Π½Π° ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΡ AssLauncher ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ CLI ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ AssLauncher Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ CLI ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
Π AssLauncher ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ DSL ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ CLI ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘.
Π‘Π°ΠΌΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ CLI ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅
cli_def Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» ΠΈΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·
ΡΡΠ΅Ρ
ΡΡΠ°ΡΡΠΈΡ
Π½ΠΎΠΌΠ΅ΡΠΎΠ² Π²Π΅ΡΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ .rb
Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ 8.3.12.rb
.
Π ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ DSL Π½Π°Π΄ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ CLI ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ AssLauncher Π²Π΅ΡΡΠΈΠ΅ΠΉ 1Π‘.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ°Π·Π½ΠΈΡΡ Π² CLI ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π½Π°Π΄ΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΡΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ CLI Π΄Π²ΡΡ
ΡΡΠΈΡ
Π²Π΅ΡΡΠΈΠΉ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π½ΡΠ΄Π½ΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡ ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎ CLI ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ
ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ git, Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Ρ
Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Π²ΡΠΎΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π·Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ git diff
. Π’Π°ΠΊΠ°Ρ
ΠΈΠ΄Π΅Ρ ΡΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
help_to_text
Π’Π΅ΠΌΠ° ΠΏΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DSL Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠΈΡΠ½Π°Ρ ΠΈ Π·Π΄Π΅ΡΡ Π·Π°ΡΡΠΎΠ½ΡΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ,
ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΌ DSL
Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½,
Π° ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ cli_def
.
ΠΠ»Ρ ΠΏΠΎΠΌΠΎΡΠΈ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ CLI ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ bin/dev-helper ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΡ DSL Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΡΡΠ΅Ρ ΠΈ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΡ:
$ bin/dev-helper -v
ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ AssLauncher ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ
Minitest. Π’Π΅ΡΡΡ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅
test/. ΠΡΠ΅ ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ test
ΡΠ²Π»ΡΡΡΡΡ Unit ΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ
Π½Π°Π»ΠΈΡΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1Π‘. ΠΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° Π½Π°Π΄ΠΎ ΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²
Π±ΡΠ΄ΡΡΠ΅ΠΌ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ΅ΡΡΠΎΠ² Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
AssLauncher ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ examples/.
ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ². ΠΠΎΡΠ»Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
bin/setup
Π΄Π°Π»Π΅Π΅ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΡ bundler exec rake
. Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ
bin/console
ΠΈ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ Ρ AssLauncher Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅
Pry
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ Gem ΠΏΠ°ΠΊΠ΅ΡΠ°.
- ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ Π²
version.rb
- Π·Π°ΠΏΡΡΡΠΈΡΡ
bundle exec rake release
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°ΡΡ git tag Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ, Π·Π°ΠΏΡΡΠΈΡ commit ΠΈ tag Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Π·Π°ΠΏΡΡΠΈΡ.gem
ΡΠ°ΠΉΠ» Π½Π° rubygems.org
Bug reports and pull requests are welcome on GitHub at https://github.com/leoniv/ass_launcher.