Skip to content

leoniv/ass_launcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Code Climate Test Coverage Gem Version Inline docs Build Status

English version of README is here

AssLauncher

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:

  1. Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Gemfile ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку:
gem 'ass_launcher'
  1. Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ установку:
$ bundle

Установка Π² систСму

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ способ установки gem-Π°:

$ gem install ass_launcher

ПослС установки Π² gem-Π° Π² систСму станСт доступна ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ass-launcer

$ ass-launcher --help

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Api

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ 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

1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ x86_64 для Windows

Π‘ вСрсии 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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ связанныС с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с OLE сСрвСрами 1Π‘

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с x86_64 in-process OLE сСрвСром v83.COMConnector

ΠŸΡ€ΠΈ использовании 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'

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с x86_64 local OLE сСрвСрами v83c.Application ΠΈ v83.Application

Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° 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>'

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с AssLauncher

Если Ρƒ Вас Π΅ΡΡ‚ΡŒ вопросы ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ 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.

About

Ruby wrapper for 1C:Enterprise platform

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages