ass_launcher 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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