ass_launcher 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4d1136f4f974d5ce64a9548ec8dcea5f26a9644d
4
- data.tar.gz: 2bbc4250dad2e0fbe12e77cf115124c617281cbb
3
+ metadata.gz: f50b3455c32b8aa9d64976b76234a6c2ad4a4ab6
4
+ data.tar.gz: 88e01366057bb5d2192c6b73249cfb9a63923fdf
5
5
  SHA512:
6
- metadata.gz: 1afbdd2e093cc2a7947c7c28be8c6bacd2cb44946d4ab9b59084d4aa29659bf4d11a3f2b20395a66965af5b12c679d129e11485c2277c4809367ed2e94aac003
7
- data.tar.gz: 688b6328498bf5aab52d0f86b42d2a1a9dcfd1dabced5675d2f51ce9ff23ce1528a8dee4954f186f4286d1f6cee96d9679c2a75b35ec4177b5e5b8edf08ea569
6
+ metadata.gz: 8de39bd1e71cea8f1b61caa87788461ea7c66082a3b04fe276bfcbc92ef695789805f396310ae52bb6f12b7efa83990a5555ae884b1904426e4fee3238a46a74
7
+ data.tar.gz: 8c6bbac62457882fa909f078ba1581c29707431336161b1d1797b9a96bb46a2d6e1f7d90f29115ecfe1c765d75f7029fea0412a5d2aaa31c42a64a8e8aea7234
@@ -1,4 +1,19 @@
1
+ env:
2
+ global:
3
+ - SIMPLECOV=Y
4
+ - CC_TEST_REPORTER_ID=3074d8c3cb0d49f626bee84a35dfc5be1946a7e6109ebac4496827f1d699491e
1
5
  language: ruby
2
6
  rvm:
3
7
  - 2.0.0
8
+ - 2.3.0
9
+ - 2.5.0
10
+ - ruby-head
4
11
  before_install: gem install bundler -v 1.10.5
12
+ before_script:
13
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
14
+ - chmod +x ./cc-test-reporter
15
+ - ./cc-test-reporter before-build
16
+ script:
17
+ - bundle exec rake test
18
+ after_script:
19
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/README.md CHANGED
@@ -1,94 +1,190 @@
1
1
  [![Code Climate](https://codeclimate.com/github/leoniv/ass_launcher/badges/gpa.svg)](https://codeclimate.com/github/leoniv/ass_launcher)
2
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/7e16ab92d89646ab2566/test_coverage)](https://codeclimate.com/github/leoniv/ass_launcher/test_coverage)
2
3
  [![Gem Version](https://badge.fury.io/rb/ass_launcher.svg)](https://badge.fury.io/rb/ass_launcher)
4
+ [![Inline docs](http://inch-ci.org/github/leoniv/ass_launcher.png)](http://inch-ci.org/github/leoniv/ass_launcher)
5
+ [![Build Status](https://travis-ci.org/leoniv/ass_launcher.svg?branch=master)](https://travis-ci.org/leoniv/ass_launcher)
6
+
7
+ _English version of README is [here](en.README.md)_
3
8
 
4
9
  # AssLauncher
5
10
 
6
- Ruby wrapper for 1C:Enterprise platform.
11
+ [Gem *AssLauncher*](https://rubygems.org/gems/ass_launcher) - это обертка поверх
12
+ платформы 1С:Предприятие v8 написанная на языке [Ruby](http://ruby-lang.org).
13
+
14
+ Цель *AssLauncher* - дать в руки "1С программистам" очень мощный, гибкий,
15
+ простой и лаконичный язык Ruby для того, чтобы их работа стала приятнее и
16
+ продуктивнее. Наслаждайтесь вместе с Ruby :)
17
+
18
+ ## Введение в проблему
19
+
20
+ Те кто писал скрипты на cmd знают какое это унылое занятие. Те кто писал скрипты
21
+ на cmd для запуска платформы 1С, с той или иной целью, знают, что это занятие
22
+ [еще более унылое](https://github.com/leoniv/v8_circles_of_hell/blob/master/articles/круг_первый_скриптинг.md)
23
+ чем первое. И практически никто, кто писал такие скрипты, не
24
+ пытался закладывать в них требование переносимости между машинами.
25
+
26
+ ## Назначение
27
+
28
+ *AssLauncher* это библиотека предоставляющая базовый набор абстракций для
29
+ удобного и надежного доступа к платформе 1С из языка Ruby.
30
+ *AssLauncher* берет на себя разрешение путей, поиск исполняемых файлов платформы
31
+ 1С и прочую рутину без которой сложно создавать надежное и переносимое между
32
+ системами ПО.
33
+
34
+ Эти абстракции можно разделить на две группы. Первая группа предназначена для
35
+ запуска исполняемых файлов платформы 1С:Предприятие в различных вариантах работы
36
+ с различными наборами параметров.
37
+
38
+ Вторая группа предназначена для доступа к 1С рантайму и кластеру серверов 1С
39
+ по средствам OLE(Com) серверов предоставляемых платформой 1С.
40
+
41
+ ## Область применения
42
+
43
+ В общем случае это создание программ на Ruby которые делают некоторые полезные
44
+ штуки с приложениями 1С. На пример:
45
+
46
+ - скрипты автоматизации административных задач сопровождения 1С приложений
47
+ - вынос части бизнес/интеграционной логики из 1С приложения на строну Ruby
48
+ - утилиты автоматизации процесса разработки 1С приложений
49
+ - создание автоматизированных тестов тестирующих 1С приложения
50
+
51
+ В настоящее время на базе *AssLauncher* разрабатывается набор библиотек имеющих
52
+ общую идею имя которой
53
+ [Ruby Powered Workflow](https://github.com/leoniv/ruby_powered_workflow)
7
54
 
8
- Goal of this to make easily and friendly writing scripts for development
9
- and support lifecycle of 1C:Enterprise applications
55
+ ## Зависимости
10
56
 
11
- `AssLauncher` is cross platform but **it full tested in `Cygwin` only!**. In `Windows` and `Linux` it works too.
57
+ *AssLauncher* проектировался как кросс-платформенный инструмент. Однако, та
58
+ часть *AssLauncher*, которая относится к доступу к платформе 1С через OLE(Com)
59
+ сервер предназначена только для Windows. Более того, в настоящее время, возможна
60
+ работа только с 32х разрядными OLE серверами 1С из 32х разрядного Ruby.
12
61
 
13
- In `Linux` don't support `OLE` feature. Don't known why I told it ;)
62
+ _Ниже будут описаны проблемы связанные с использованием 64x разрядных OLE
63
+ серверов._
14
64
 
65
+ Рекомендуемое окружение:
15
66
 
16
- ## Quick start
67
+ - OC Widows старше Windows XP
68
+ - UNIX окружение [cygwin](https://www.cygwin.com). Используйте 32-х разрядный
69
+ вариант установки cygwin [setup-x86.exe](https://www.cygwin.com/setup-x86.exe)
70
+ - установленный в cygwin 32-х разрядный Ruby версии старше 2.0
17
71
 
18
- ### Using `AssLauncher` as a library
72
+ ## Использование
19
73
 
20
- Add this line to your application's Gemfile:
74
+ Основной вариант использования *AssLauncher* это набор классов.
75
+
76
+ Однако с версии `0.3.0`, *AssLauncher* в дополнение к набору классов,
77
+ предоставляет консольную утилиту `ass-launcher` которая имеет следующие фичи:
78
+
79
+ - создание новых экземпляров приложений 1С известных как "информационная база"
80
+ - запуск платформы 1С в различных её вариантах таких как *thick/thin/web*
81
+ клиенты и *designer* он же *конфигуратор*
82
+ - показывает справку по CLI параметрам платформы 1С в различных её
83
+ вариантах таких как *thick/thin/web* клиенты и *designer* он же *конфигуратор*
84
+ - и кое-что еще см. `ass-launcher --help`
85
+
86
+ ### Подключение к проекту
87
+
88
+ Стандартный способ с использованием менеджера зависимостей
89
+ [bundler](https://bundler.io):
90
+
91
+ 1. добавить в [Gemfile](https://bundler.io/gemfile.html) следующую строку:
21
92
 
22
93
  ```ruby
23
94
  gem 'ass_launcher'
24
95
  ```
25
96
 
26
- And then execute:
97
+ 2. запустить установку:
98
+
99
+ ```
100
+ $ bundle
101
+ ```
27
102
 
28
- $ bundle
103
+ ### Установка в систему
29
104
 
30
- Or install it yourself as:
105
+ Стандартный способ установки gem-а:
31
106
 
32
- $ gem install ass_launcher
107
+ ```
108
+ $ gem install ass_launcher
109
+ ```
33
110
 
34
- For example, writing script which dumping 1C:Enterprise application
111
+ После установки в gem-а в систему станет доступна утилита `ass-launcer`
112
+
113
+ ```
114
+ $ ass-launcher --help
115
+ ```
116
+
117
+ ### Базовый Api
118
+
119
+ Базовый Api *AssLauncher* выделен в модуль `AssLauncher::Api`. Используйте этот
120
+ модуль как mixin.
121
+ [Документация по AssLauncher::Api](https://www.rubydoc.info/gems/ass_launcher/AssLauncher/Api)
122
+
123
+ ### Быстрый пример
124
+
125
+ Для примера предлагается скрипт который выполняет дамп приложения (информационной
126
+ базы).
127
+
128
+ <details><summary>развернуть...</summary>
129
+ <p>
35
130
 
36
131
  ```ruby
37
132
  require 'ass_launcher'
38
133
 
134
+ # Модуль предоставляет общий Api AssLauncher
39
135
  include AssLauncher::Api
40
136
 
41
137
  def main(dupm_path)
42
- # Get wrapper for the thck client
138
+ # Получаем обертку для толстого клиента версии 8.3.8.+
43
139
  thick_client = thicks('~> 8.3.8.0').last
44
140
 
45
- # Fail if 1C:Enterprise installation not found
46
- fail '1C:Enterprise not found' if thick_client.nil?
141
+ # Если AssLauncher не смог найти исполняемый файл метод thicks вернет
142
+ # пустой массив, а пустой_массив.last вернет nil
143
+ fail 'Установка платформы 1С v8.3.8 не найдена'\
144
+ ' выполните `ass-launcher env` для просмотра установленных'
145
+ ' версий платформы 1С' if thick_client.nil?
47
146
 
48
- # Build designer command
147
+ # Создаем объект для запуска толстого клиента в режиме
148
+ # "конфигуратора" с необходимыми параметрами запуска:
149
+ # - _S - путь к серверной ИБ - параметр запуска /S
150
+ # - dumpIB dump_path - выполнение пакетной команды - параметр /DumpIB
49
151
  designer = thick_client.command :designer do
50
152
  _S 'enterprse_server/application_name'
51
153
  dumpIB dupm_path
52
154
  end
53
155
 
54
- # Execute command
156
+ # Запускам команду на исполнение и ждем завершения
55
157
  designer.run.wait
56
158
 
57
- # Verify result
159
+ # Проверяем результат. Если работа конфигуратора завершится с ошибкой
160
+ # verify! кинет исключение
58
161
  designer.process_holder.result.verify!
59
162
  end
60
163
 
61
164
  main ARGV[0]
62
165
  ```
63
166
 
64
- ### Command line utility `ass-launcher`
167
+ </p></details>
65
168
 
66
- From version `0.3.0` `AssLauncher` provides console tool `ass-launcher` wich has
67
- features:
169
+ Больше примеров можно найти в каталогах [examples/](examples/) и
170
+ [examples/troubles](examples/troubles)
68
171
 
69
- - make new 1C:Enterprise application instance (aka information base)
70
- - run 1C:Enterprise
71
- - show help about 1C:Enterprise CLI parameters
72
- - and some more
172
+ ## 1С:Предприятие x86_64 для Windows
73
173
 
74
- For more info about `ass-launcher` execute:
174
+ С версии `8.3.9` 1С выпустила x86_64 дистрибутив платформы для Windows. Для
175
+ выбора архитектуры платформы `AssLauncher::Enterprise::BinaryWrapper` имеет
176
+ свойство `arch` по которому можно фильтровать массив найденных установок
177
+ платформы 1С. Однако для удобства в модуле `AssLauncher::Api` реализовано
178
+ несколько хелперов с суффиксами `*_i386` и `*_x86_64` которые возвращают уже
179
+ отфильтрованный по архитектуре массив.
75
180
 
76
- $ass-launcher --help
181
+ Для in-process OLE сервера 1С `v83.ComConnector`, файл `comcntr.dll`, архитектура
182
+ бинарного файла сервера выбирается автоматически в зависимости от архитектуры
183
+ Ruby.
77
184
 
78
-
79
- ## x86_64 1C:Enterprise for Windows
80
-
81
- From `v8.3.9` 1C provides x86_64 arch platform for Windows.
82
-
83
- For choosing which arch of 1C binary you need
84
- `AssLauncher::Enterprise::BinaryWrapper` has `arch` property and some helpers
85
- in `AssLauncher::Api` like a `*_i386` and `*_x86_64`.
86
-
87
- For inproc OLE server `v83.ComConnector` aka `comcntr.dll`, arch of 1C
88
- binary selects automaticaly in depends of Ruby arch.
89
-
90
- On default using of `x86_64` 1C OLE server is forbidden (see below trouble).
91
- For forcing to use `x86_64` OLE server set config flag `use_x86_64_ole`:
185
+ По умолчанию, использование x86_64 OLE сервера 1С, запрещено (из за проблем
186
+ описанных ниже). Для принудительного использования x86_64 OLE сервера
187
+ установите флаг `use_x86_64_ole` конфига *AssLauncher*:
92
188
 
93
189
  ```ruby
94
190
  AssLauncher.configure do |conf|
@@ -96,13 +192,12 @@ For forcing to use `x86_64` OLE server set config flag `use_x86_64_ole`:
96
192
  end
97
193
  ```
98
194
 
99
- ### Trouble with x86_64 inproc OLE server `v83.ComConnector`
100
-
101
- `x86_64` inproc OLE server or Ruby `win32ole` is unstable now
102
- and Ruby usually crashed while handling connect error.
195
+ ## Проблемы связанные с работой с OLE серверами
103
196
 
104
- Еxample for `x86_64` Ruby and 1C OLE server:
197
+ ### Проблема с x86_64 in-process OLE сервером `v83.COMConnector`
105
198
 
199
+ При использовании `x86_64` сервера `v83.COMConnector`, Ruby терпит крах при
200
+ возникновении исключения во время вызова метода сервера `connect`:
106
201
  ```
107
202
  $ruby -v
108
203
  ruby 2.3.6p384 (2017-12-14 revision 9808) [x86_64-cygwin]
@@ -121,7 +216,7 @@ inproc.connect('invalid connection string')
121
216
  Aborted (стек памяти сброшен на диск)
122
217
  ```
123
218
 
124
- The same example for `i386` Ruby and 1C OLE server working fine:
219
+ Тот же пример для `i386` сервера работает прекрасно:
125
220
 
126
221
  ```
127
222
  $ruby -v
@@ -145,15 +240,16 @@ WIN32OLERuntimeError: (in OLE method `connect': )
145
240
  from (pry):3:in `method_missing'
146
241
  ```
147
242
 
243
+ ### Проблемы с x86_64 local OLE серверами `v83c.Application` и `v83.Application`
148
244
 
149
- ### Trouble with x86_64 standalone OLE servers `v83c.Application` and `v83.Application`
245
+ В теории архитектура local OLE сервера, в отличии от in-process сервера, не важна
246
+ с точки зрения архитектуры клиента, т.е. Ruby, так как local OLE сервер
247
+ выполняется в своем процессе.
150
248
 
151
- On theory, architecture of standalone OLE server isn't important for using them
152
- in various Ruby architectures.
153
-
154
- But it only theory. While in the run [exaples](examples/) in the `i386` Ruby
155
- with `x86_64` standalone 1C OLE observes the unexpected behavior of 1C OLE
156
- servers like a errors while to connect to information base:
249
+ Однако это только в теории. Если запустить [examples/](examples) в `i386` Ruby
250
+ но использовать `x86_64` серверы `v83.Application` наблюдается неожиданное
251
+ поведение такое как неизвестная ошибка при установке соединения с информационной
252
+ базой:
157
253
 
158
254
  ```
159
255
  WIN32OLERuntimeError: (in OLE method `connect': )
@@ -169,67 +265,79 @@ WIN32OLERuntimeError: (in OLE method `connect': )
169
265
  /tmp/ass_launcher/examples/enterprise_ole_example.rb:131:in `block (4 levels) in <module:EnterpriseOle>'
170
266
  ```
171
267
 
172
- ## Usage
173
-
174
- ### Examples
175
-
176
- For more usage examples see [examples](examples/)
177
-
178
- For beginning look at
179
- [examples/enterprise_running_example.rb](examples/enterprise_running_example.rb)
180
-
181
- All [examples](examples/) executable. For run them require
182
- 1C:Enterprise platform version defined in `Examples::MIN_PLATFORM_VERSION`
183
-
184
- Run all examples:
268
+ ## Получение помощи в работе с AssLauncher
185
269
 
186
- $rake run_examples
270
+ Если у Вас есть вопросы откройте новый issue с меткой `question`.
187
271
 
188
- Or run specified example:
272
+ ## Разработка
189
273
 
190
- $rake run_examples TEST=examples/enterprise_running_example.rb
274
+ ### Документирование кода
191
275
 
192
- ### Troubles
276
+ Для документирования кода используется разметка [yadr](https://yardoc.org/)
193
277
 
194
- Directory [examples/troubles](examples/troubles) contains examples
195
- which describe troubles with executing 1C:Enterprise binary.
278
+ ### Поддержание *AssLauncher* в согласованном состоянии с релизами платформы 1С
196
279
 
197
- All [examples/troubles](examples/troubles) are executable too.
280
+ Одна из основных фич *AssLauncher* это контроль корректности CLI параметров
281
+ консольного запуска платформы 1С. Для этого *AssLauncher* должен знать CLI
282
+ каждой поддерживаемой версии платформы 1С, для каждого режима запуска платформы.
198
283
 
199
- Run all troubles:
284
+ В *AssLauncher* реализован специальный
285
+ [DSL](https://www.rubydoc.info/gems/ass_launcher/AssLauncher/Enterprise/Cli/SpecDsl)
286
+ описания CLI платформы 1С.
200
287
 
201
- $rake run_trouble_examples
288
+ Само описание CLI платформы расположено в каталоге
289
+ [cli_def](lib/ass_launcher/enterprise/cli_def/) в котором для каждой
290
+ поддерживаемой версии платформы необходимо создать файл имя которого состоит из
291
+ трех старших номеров версии платформы и расширения `.rb` на пример `8.3.12.rb`.
202
292
 
203
- **Be careful to run [examples/troubles](examples/troubles)! Learn sources before run it.**
293
+ В этом файле с помощью вышеупомянутого DSL надо описать **только изменения** CLI
294
+ которые произошли в данной версии платформы по сравнению с последней
295
+ поддерживаемой *AssLauncher* версией 1С.
204
296
 
205
- ## Help
297
+ Для того чтобы описать разницу в CLI текущей версии платформы и последней
298
+ поддерживаемой версией надо внимательно вычитать документацию по CLI двух этих
299
+ версий. Это очень нудное занятие которое можно автоматизировать.
300
+ На пример можно сохранить текст справки по CLI одной версии
301
+ платформы и поместить его под контроль git, затем сделать тоже самое с
302
+ документацией второй версии и посмотреть разницу с помощью `git diff`. Такая
303
+ идея уже имеет свою реализацию пригодную к использованию:
304
+ [help_to_text](https://github.com/leoniv/help_to_text)
206
305
 
207
- If you have any questions open issue with `question` lable
306
+ Тема про использование DSL достаточно обширная и здесь затронута не будет,
307
+ однако сам DSL
308
+ [задокументирован](https://www.rubydoc.info/gems/ass_launcher/AssLauncher/Enterprise/Cli/SpecDsl),
309
+ а примеры использования можно посмотреть в каталоге `cli_def`.
208
310
 
209
- ## Development
311
+ Для помощи в описании CLI платформы можно использовать утилиту
312
+ [bin/dev-helper](bin/dev-helper) которая может создавать сниппеты DSL выводить
313
+ отчет и открывать конфигуратр:
210
314
 
211
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
315
+ $ bin/dev-helper -v
212
316
 
213
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
317
+ ### Тестирование
214
318
 
215
- ### Development helper
319
+ Для тестирования *AssLauncher* использует тестовый фреймворк
320
+ [Minitest](https://rubygems.org/gems/minitest). Тесты находятся в каталоге
321
+ [test/](test/). Все тесты в каталоге `test` являются Unit тестами и не требуют
322
+ наличия установленной платформы 1С. Этого принципа надо строго придерживаться в
323
+ будущем. В качестве интеграционных тестов выступают примеры использования
324
+ *AssLauncher* расположенные в каталоге [examples/](examples/).
216
325
 
217
- `AssLauncher` include [bin/dev-helper](bin/dev-helper) utility for contributors.
326
+ Запуск тестов. После клонирования репозитория запустите установку зависимостей
327
+ `bin/setup` далее запустите тесты `bundler exec rake`. Так же вы можете запустить
328
+ `bin/console` и поиграть с AssLauncher в интерактивной оболочке
329
+ [Pry](https://github.com/pry/pry)
218
330
 
219
- $bin/dev-helper --help
331
+ ### Релиз
220
332
 
221
- ### Testing
333
+ Стандартный процесс для [Gem](https://rubygems.org) пакета.
222
334
 
223
- #### Run unit tests:
335
+ - обновить номер версии в `version.rb`
336
+ - запустить `bundle exec rake release` который создаст git tag для версии,
337
+ запушит commit и tag в репозиторий и запушит `.gem` файл на
338
+ [rubygems.org](https://rubygems.org)
224
339
 
225
- $export SIMPLECOV=YES && rake test
226
-
227
- Unit tests is isolated and doesn't require installation of 1C:Enterprise
228
-
229
- #### Run examples:
230
-
231
- Examples writed as `Minitest::Spec`. About run examples see above
232
-
233
- ## Contributing
340
+ ## Поддержка
234
341
 
235
342
  Bug reports and pull requests are welcome on GitHub at https://github.com/leoniv/ass_launcher.
343
+
@@ -21,8 +21,6 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.required_ruby_version = '~> 2.0'
23
23
 
24
- spec.metadata = {'known_enterprise_versions' => AssLauncher::KNOWN_ENTERPRISE_VERSIONS.get.join(', ')}
25
-
26
24
  spec.add_dependency "inifile", "~> 3.0"
27
25
  spec.add_dependency "methadone", "~> 1.9"
28
26
  spec.add_dependency "addressable", "= 2.4.0"
@@ -38,4 +36,5 @@ Gem::Specification.new do |spec|
38
36
  spec.add_development_dependency "mocha", "= 1.1.0"
39
37
  spec.add_development_dependency "simplecov", "~> 0.15"
40
38
  spec.add_development_dependency "coderay", "~> 1.1"
39
+ spec.add_development_dependency "yard"
41
40
  end