cloudmunda 0.1.1 → 0.1.4

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
  SHA256:
3
- metadata.gz: '0882dcb50d23ad283984404e67f589a28d39a08c19ec44b9c2ca00659386962e'
4
- data.tar.gz: 7d03f8ddd3c6cc8ba8a464e64e84a14234a791540f947a25cb94dd36fd5bc8c1
3
+ metadata.gz: 936e312ef49af3f00fc9c0d4f97b84ce173a8da8981273791a88977a3bb3cfe8
4
+ data.tar.gz: c9dc23a1bf6142d0bd0e49d22a9261cfcfb197bcc83b7a2ea7600407ea709579
5
5
  SHA512:
6
- metadata.gz: 1aa60b038071944496032564eb73a21c3344211ab4339cc77d9d74de6ecaf7814e31eb69fafada0cd6f25432f9e4a85f2cf9003edf209735605986f9c5c26f9b
7
- data.tar.gz: 5e5d47130dc95f8d98a12facaf4dc8830cded1f3420e3b96df838d5730c01339dd0187177d9f5d92c6c1ac175b67d647530dc497383686eda2d46a16cba57355
6
+ metadata.gz: e937d7735c28308809b9c57e23fc4c40ceb6030a3ccce06d186d49848473fe42f40ddbaa9654954aabe4ed06e03616f7dc6c2721d05689cec71bce5ed39a2262
7
+ data.tar.gz: b75a37bc42b05a8c8e947d7243ec4b5d50cd9311d4a42afa16c505f1d04c01f239a0d660a41644ad1c3fda62cd187486628c7f393c3e9e66c61cbc33f3cbd8c7
data/.rubocop.yml CHANGED
@@ -1,13 +1,11 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
1
3
  AllCops:
2
4
  TargetRubyVersion: 2.6
5
+ NewCops: enable
3
6
 
4
- Style/StringLiterals:
5
- Enabled: true
6
- EnforcedStyle: double_quotes
7
-
8
- Style/StringLiteralsInInterpolation:
9
- Enabled: true
10
- EnforcedStyle: double_quotes
7
+ Style/Documentation:
8
+ Enabled: false
11
9
 
12
10
  Layout/LineLength:
13
11
  Max: 120
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,39 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2022-02-25 21:56:34 UTC using RuboCop version 1.23.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 4
10
+ # Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
11
+ Metrics/AbcSize:
12
+ Max: 52
13
+
14
+ # Offense count: 1
15
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
16
+ # IgnoredMethods: refine
17
+ Metrics/BlockLength:
18
+ Max: 43
19
+
20
+ # Offense count: 1
21
+ # Configuration parameters: CountComments, CountAsOne.
22
+ Metrics/ClassLength:
23
+ Max: 117
24
+
25
+ # Offense count: 5
26
+ # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
27
+ Metrics/MethodLength:
28
+ Max: 45
29
+
30
+ # Offense count: 8
31
+ Naming/AccessorMethodName:
32
+ Exclude:
33
+ - 'lib/cloudmunda/cli/worker.rb'
34
+ - 'lib/cloudmunda/zeebe/client.rb'
35
+
36
+ # Offense count: 1
37
+ Style/OpenStructUse:
38
+ Exclude:
39
+ - 'lib/cloudmunda/api/o_auth_resource.rb'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.4] - 2022-08-09
4
+ - Rework how we use `runs_in_development` together with `type`. This is a very biased approach. What we do from now on if when in your job definition `runs_in_development` equals to true, we will add `-dev` to the type name.
5
+
6
+ ## [0.1.3] - 2022-02-25
7
+ - Fix bug in `Supervisor#start` that would lead to not gracefully shutting down workers.
8
+
9
+ ## [0.1.2] - 2022-02-25
10
+ - Add class method `runs_in_development` to Cloudmunda::Worker. This way you can run only specific jobs in development.
11
+
3
12
  ## [0.1.1] - 2021-12-16
4
13
 
5
14
  - Camunda Cloud Access Token Creation
@@ -8,5 +17,4 @@
8
17
 
9
18
  ## [0.1.0] - 2021-12-16
10
19
 
11
- - Initial release
12
- _
20
+ - Initial release
data/Gemfile CHANGED
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in cloudmunda.gemspec
6
6
  gemspec
7
7
 
8
- gem "rails", ">= 6"
9
- gem "rake", "~> 13.0"
10
- gem "rspec", "~> 3.0"
11
- gem "rubocop", "~> 1.21"
8
+ gem 'rails', '>= 6'
9
+ gem 'rake', '~> 13.0'
10
+ gem 'rspec', '~> 3.0'
11
+ gem 'rubocop', '~> 1.21'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cloudmunda (0.1.1)
4
+ cloudmunda (0.1.4)
5
5
  concurrent-ruby (~> 1.0)
6
6
  rest-client (~> 2.0)
7
7
  zeebe-client (~> 0.16)
@@ -9,87 +9,95 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- actioncable (6.1.4.1)
13
- actionpack (= 6.1.4.1)
14
- activesupport (= 6.1.4.1)
12
+ actioncable (7.0.3.1)
13
+ actionpack (= 7.0.3.1)
14
+ activesupport (= 7.0.3.1)
15
15
  nio4r (~> 2.0)
16
16
  websocket-driver (>= 0.6.1)
17
- actionmailbox (6.1.4.1)
18
- actionpack (= 6.1.4.1)
19
- activejob (= 6.1.4.1)
20
- activerecord (= 6.1.4.1)
21
- activestorage (= 6.1.4.1)
22
- activesupport (= 6.1.4.1)
17
+ actionmailbox (7.0.3.1)
18
+ actionpack (= 7.0.3.1)
19
+ activejob (= 7.0.3.1)
20
+ activerecord (= 7.0.3.1)
21
+ activestorage (= 7.0.3.1)
22
+ activesupport (= 7.0.3.1)
23
23
  mail (>= 2.7.1)
24
- actionmailer (6.1.4.1)
25
- actionpack (= 6.1.4.1)
26
- actionview (= 6.1.4.1)
27
- activejob (= 6.1.4.1)
28
- activesupport (= 6.1.4.1)
24
+ net-imap
25
+ net-pop
26
+ net-smtp
27
+ actionmailer (7.0.3.1)
28
+ actionpack (= 7.0.3.1)
29
+ actionview (= 7.0.3.1)
30
+ activejob (= 7.0.3.1)
31
+ activesupport (= 7.0.3.1)
29
32
  mail (~> 2.5, >= 2.5.4)
33
+ net-imap
34
+ net-pop
35
+ net-smtp
30
36
  rails-dom-testing (~> 2.0)
31
- actionpack (6.1.4.1)
32
- actionview (= 6.1.4.1)
33
- activesupport (= 6.1.4.1)
34
- rack (~> 2.0, >= 2.0.9)
37
+ actionpack (7.0.3.1)
38
+ actionview (= 7.0.3.1)
39
+ activesupport (= 7.0.3.1)
40
+ rack (~> 2.0, >= 2.2.0)
35
41
  rack-test (>= 0.6.3)
36
42
  rails-dom-testing (~> 2.0)
37
43
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
38
- actiontext (6.1.4.1)
39
- actionpack (= 6.1.4.1)
40
- activerecord (= 6.1.4.1)
41
- activestorage (= 6.1.4.1)
42
- activesupport (= 6.1.4.1)
44
+ actiontext (7.0.3.1)
45
+ actionpack (= 7.0.3.1)
46
+ activerecord (= 7.0.3.1)
47
+ activestorage (= 7.0.3.1)
48
+ activesupport (= 7.0.3.1)
49
+ globalid (>= 0.6.0)
43
50
  nokogiri (>= 1.8.5)
44
- actionview (6.1.4.1)
45
- activesupport (= 6.1.4.1)
51
+ actionview (7.0.3.1)
52
+ activesupport (= 7.0.3.1)
46
53
  builder (~> 3.1)
47
54
  erubi (~> 1.4)
48
55
  rails-dom-testing (~> 2.0)
49
56
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
50
- activejob (6.1.4.1)
51
- activesupport (= 6.1.4.1)
57
+ activejob (7.0.3.1)
58
+ activesupport (= 7.0.3.1)
52
59
  globalid (>= 0.3.6)
53
- activemodel (6.1.4.1)
54
- activesupport (= 6.1.4.1)
55
- activerecord (6.1.4.1)
56
- activemodel (= 6.1.4.1)
57
- activesupport (= 6.1.4.1)
58
- activestorage (6.1.4.1)
59
- actionpack (= 6.1.4.1)
60
- activejob (= 6.1.4.1)
61
- activerecord (= 6.1.4.1)
62
- activesupport (= 6.1.4.1)
63
- marcel (~> 1.0.0)
60
+ activemodel (7.0.3.1)
61
+ activesupport (= 7.0.3.1)
62
+ activerecord (7.0.3.1)
63
+ activemodel (= 7.0.3.1)
64
+ activesupport (= 7.0.3.1)
65
+ activestorage (7.0.3.1)
66
+ actionpack (= 7.0.3.1)
67
+ activejob (= 7.0.3.1)
68
+ activerecord (= 7.0.3.1)
69
+ activesupport (= 7.0.3.1)
70
+ marcel (~> 1.0)
64
71
  mini_mime (>= 1.1.0)
65
- activesupport (6.1.4.1)
72
+ activesupport (7.0.3.1)
66
73
  concurrent-ruby (~> 1.0, >= 1.0.2)
67
74
  i18n (>= 1.6, < 2)
68
75
  minitest (>= 5.1)
69
76
  tzinfo (~> 2.0)
70
- zeitwerk (~> 2.3)
71
77
  ast (2.4.2)
72
78
  builder (3.2.4)
73
- concurrent-ruby (1.1.9)
79
+ concurrent-ruby (1.1.10)
74
80
  crass (1.0.6)
75
- diff-lcs (1.4.4)
81
+ diff-lcs (1.5.0)
82
+ digest (3.1.0)
76
83
  domain_name (0.5.20190701)
77
84
  unf (>= 0.0.5, < 1.0.0)
78
- erubi (1.10.0)
85
+ erubi (1.11.0)
79
86
  globalid (1.0.0)
80
87
  activesupport (>= 5.0)
81
- google-protobuf (3.19.1-x86_64-darwin)
82
- googleapis-common-protos-types (1.3.0)
88
+ google-protobuf (3.21.4-x86_64-darwin)
89
+ googleapis-common-protos-types (1.3.2)
83
90
  google-protobuf (~> 3.14)
84
- grpc (1.42.0-x86_64-darwin)
85
- google-protobuf (~> 3.18)
91
+ grpc (1.48.0-x86_64-darwin)
92
+ google-protobuf (~> 3.19)
86
93
  googleapis-common-protos-types (~> 1.0)
87
94
  http-accept (1.7.0)
88
- http-cookie (1.0.4)
95
+ http-cookie (1.0.5)
89
96
  domain_name (~> 0.5)
90
- i18n (1.8.11)
97
+ i18n (1.12.0)
91
98
  concurrent-ruby (~> 1.0)
92
- loofah (2.13.0)
99
+ json (2.6.2)
100
+ loofah (2.18.0)
93
101
  crass (~> 1.0.2)
94
102
  nokogiri (>= 1.5.9)
95
103
  mail (2.7.1)
@@ -98,103 +106,114 @@ GEM
98
106
  method_source (1.0.0)
99
107
  mime-types (3.4.1)
100
108
  mime-types-data (~> 3.2015)
101
- mime-types-data (3.2021.1115)
109
+ mime-types-data (3.2022.0105)
102
110
  mini_mime (1.1.2)
103
- minitest (5.14.4)
111
+ minitest (5.16.2)
112
+ net-imap (0.2.3)
113
+ digest
114
+ net-protocol
115
+ strscan
116
+ net-pop (0.1.1)
117
+ digest
118
+ net-protocol
119
+ timeout
120
+ net-protocol (0.1.3)
121
+ timeout
122
+ net-smtp (0.3.1)
123
+ digest
124
+ net-protocol
125
+ timeout
104
126
  netrc (0.11.0)
105
127
  nio4r (2.5.8)
106
- nokogiri (1.12.5-x86_64-darwin)
128
+ nokogiri (1.13.8-x86_64-darwin)
107
129
  racc (~> 1.4)
108
- parallel (1.21.0)
109
- parser (3.0.3.2)
130
+ parallel (1.22.1)
131
+ parser (3.1.2.1)
110
132
  ast (~> 2.4.1)
111
133
  racc (1.6.0)
112
- rack (2.2.3)
113
- rack-test (1.1.0)
114
- rack (>= 1.0, < 3)
115
- rails (6.1.4.1)
116
- actioncable (= 6.1.4.1)
117
- actionmailbox (= 6.1.4.1)
118
- actionmailer (= 6.1.4.1)
119
- actionpack (= 6.1.4.1)
120
- actiontext (= 6.1.4.1)
121
- actionview (= 6.1.4.1)
122
- activejob (= 6.1.4.1)
123
- activemodel (= 6.1.4.1)
124
- activerecord (= 6.1.4.1)
125
- activestorage (= 6.1.4.1)
126
- activesupport (= 6.1.4.1)
134
+ rack (2.2.4)
135
+ rack-test (2.0.2)
136
+ rack (>= 1.3)
137
+ rails (7.0.3.1)
138
+ actioncable (= 7.0.3.1)
139
+ actionmailbox (= 7.0.3.1)
140
+ actionmailer (= 7.0.3.1)
141
+ actionpack (= 7.0.3.1)
142
+ actiontext (= 7.0.3.1)
143
+ actionview (= 7.0.3.1)
144
+ activejob (= 7.0.3.1)
145
+ activemodel (= 7.0.3.1)
146
+ activerecord (= 7.0.3.1)
147
+ activestorage (= 7.0.3.1)
148
+ activesupport (= 7.0.3.1)
127
149
  bundler (>= 1.15.0)
128
- railties (= 6.1.4.1)
129
- sprockets-rails (>= 2.0.0)
150
+ railties (= 7.0.3.1)
130
151
  rails-dom-testing (2.0.3)
131
152
  activesupport (>= 4.2.0)
132
153
  nokogiri (>= 1.6)
133
- rails-html-sanitizer (1.4.2)
154
+ rails-html-sanitizer (1.4.3)
134
155
  loofah (~> 2.3)
135
- railties (6.1.4.1)
136
- actionpack (= 6.1.4.1)
137
- activesupport (= 6.1.4.1)
156
+ railties (7.0.3.1)
157
+ actionpack (= 7.0.3.1)
158
+ activesupport (= 7.0.3.1)
138
159
  method_source
139
- rake (>= 0.13)
160
+ rake (>= 12.2)
140
161
  thor (~> 1.0)
141
- rainbow (3.0.0)
162
+ zeitwerk (~> 2.5)
163
+ rainbow (3.1.1)
142
164
  rake (13.0.6)
143
- regexp_parser (2.2.0)
165
+ regexp_parser (2.5.0)
144
166
  rest-client (2.1.0)
145
167
  http-accept (>= 1.7.0, < 2.0)
146
168
  http-cookie (>= 1.0.2, < 2.0)
147
169
  mime-types (>= 1.16, < 4.0)
148
170
  netrc (~> 0.8)
149
171
  rexml (3.2.5)
150
- rspec (3.10.0)
151
- rspec-core (~> 3.10.0)
152
- rspec-expectations (~> 3.10.0)
153
- rspec-mocks (~> 3.10.0)
154
- rspec-core (3.10.1)
155
- rspec-support (~> 3.10.0)
156
- rspec-expectations (3.10.1)
172
+ rspec (3.11.0)
173
+ rspec-core (~> 3.11.0)
174
+ rspec-expectations (~> 3.11.0)
175
+ rspec-mocks (~> 3.11.0)
176
+ rspec-core (3.11.0)
177
+ rspec-support (~> 3.11.0)
178
+ rspec-expectations (3.11.0)
157
179
  diff-lcs (>= 1.2.0, < 2.0)
158
- rspec-support (~> 3.10.0)
159
- rspec-mocks (3.10.2)
180
+ rspec-support (~> 3.11.0)
181
+ rspec-mocks (3.11.1)
160
182
  diff-lcs (>= 1.2.0, < 2.0)
161
- rspec-support (~> 3.10.0)
162
- rspec-support (3.10.3)
163
- rubocop (1.23.0)
183
+ rspec-support (~> 3.11.0)
184
+ rspec-support (3.11.0)
185
+ rubocop (1.34.1)
186
+ json (~> 2.3)
164
187
  parallel (~> 1.10)
165
- parser (>= 3.0.0.0)
188
+ parser (>= 3.1.2.1)
166
189
  rainbow (>= 2.2.2, < 4.0)
167
190
  regexp_parser (>= 1.8, < 3.0)
168
- rexml
169
- rubocop-ast (>= 1.12.0, < 2.0)
191
+ rexml (>= 3.2.5, < 4.0)
192
+ rubocop-ast (>= 1.20.0, < 2.0)
170
193
  ruby-progressbar (~> 1.7)
171
194
  unicode-display_width (>= 1.4.0, < 3.0)
172
- rubocop-ast (1.15.0)
173
- parser (>= 3.0.1.1)
195
+ rubocop-ast (1.21.0)
196
+ parser (>= 3.1.1.0)
174
197
  ruby-progressbar (1.11.0)
175
- sprockets (4.0.2)
176
- concurrent-ruby (~> 1.0)
177
- rack (> 1, < 3)
178
- sprockets-rails (3.4.1)
179
- actionpack (>= 5.2)
180
- activesupport (>= 5.2)
181
- sprockets (>= 3.0.0)
182
- thor (1.1.0)
183
- tzinfo (2.0.4)
198
+ strscan (3.0.4)
199
+ thor (1.2.1)
200
+ timeout (0.3.0)
201
+ tzinfo (2.0.5)
184
202
  concurrent-ruby (~> 1.0)
185
203
  unf (0.1.4)
186
204
  unf_ext
187
- unf_ext (0.0.8)
188
- unicode-display_width (2.1.0)
205
+ unf_ext (0.0.8.2)
206
+ unicode-display_width (2.2.0)
189
207
  websocket-driver (0.7.5)
190
208
  websocket-extensions (>= 0.1.0)
191
209
  websocket-extensions (0.1.5)
192
- zeebe-client (0.16.0)
210
+ zeebe-client (0.17.0)
193
211
  grpc (~> 1.32)
194
- zeitwerk (2.5.1)
212
+ zeitwerk (2.6.0)
195
213
 
196
214
  PLATFORMS
197
215
  x86_64-darwin-20
216
+ x86_64-darwin-21
198
217
 
199
218
  DEPENDENCIES
200
219
  cloudmunda!
data/README.md CHANGED
@@ -1,8 +1,16 @@
1
1
  # Cloudmunda
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/cloudmunda`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ This Ruby gem makes it easier to connect your Ruby (on Rails) app with Camunda Cloud. 🎉
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ The following is included:
6
+ - Ruby workers for Zeebe
7
+ - API wrapper for Camunda Cloud
8
+ - graphQL wrapper Usertasks
9
+
10
+ To use this library you need:
11
+
12
+ * a [Camunda Cloud Account](https://accounts.cloud.camunda.io/signup)
13
+ * your [Camunda client connection credentials](https://docs.camunda.io/docs/guides/getting-started/setup-client-connection-credentials/)
6
14
 
7
15
  ## Installation
8
16
 
@@ -20,18 +28,159 @@ Or install it yourself as:
20
28
 
21
29
  $ gem install cloudmunda
22
30
 
23
- ## Usage
31
+ ### Rails applications
32
+
33
+ If you're using this gem with a rails application, you could create a `config/initializers/cloudmunda.rb` file and add
34
+ the following:
35
+
36
+ ```ruby
37
+ Cloudmunda.configure do |config|
38
+ config.env = ENV['APP_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
39
+ config.logger = Logger.new($stdout)
40
+ config.timeout = 30
41
+ config.client_id = ENV['ZEEBE_CLIENT_ID']
42
+ config.client_secret = ENV['ZEEBE_CLIENT_SECRET']
43
+ config.zeebe_url = ENV['ZEEBE_URL']
44
+ config.auth_url = ENV['ZEEBE_AUTHORIZATION_SERVER_URL']
45
+ config.audience = ENV['ZEEBE_AUDIENCE']
46
+ config.graphql_url = ENV['GRAPHQL_URL']
47
+ end
48
+ ```
49
+
50
+ The values listed above are the default values that you can override.
51
+
52
+ ## Example Usage
53
+
54
+ This section will explain the usage as you were using a Rails application, but steps should be very similar within plain
55
+ Ruby apps or any other frameworks out there. Feel free to create an issue or PR if additional items are needed.
56
+
57
+ The idea of the example is that when a certain webhook comes in, a Slack message is sent. This might look like a bit
58
+ of overhead to use a business process engine for this, but it's just to show how the library works. Since we're
59
+ communicating with Slack, you'd need a Slack workspace. You can also change the code in the example to send an email or
60
+ just write something in the logs.
61
+
62
+ You can find all the code [here](https://github.com/lienvdsteen/cloudmunda-demo).
63
+
64
+ ### Add Slack and Cloudmunda gem
65
+ In your Gemfile add this line
66
+
67
+ ```ruby
68
+ gem 'cloudmunda'
69
+ gem 'slack-ruby-client' # this is just for our example
70
+ ```
71
+
72
+ Then run
73
+
74
+ ```shell
75
+ bundle install
76
+ ```
77
+
78
+ As said above, create a initializer file so that whenever you are interacting with them gem you have the right settings set:
79
+
80
+ ```shell
81
+ touch config/initializers/cloudmunda.rb
82
+ touch config/initializers/slack.rb # again, this is just for our example
83
+ ```
84
+
85
+ Then open the `cloudmunda.rb` file and copy the following in it:
24
86
 
25
87
  ```ruby
26
88
  Cloudmunda.configure do |config|
27
89
  config.env = ENV['APP_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
28
- config.require = '.'
90
+ config.logger = Logger.new($stdout)
29
91
  config.timeout = 30
92
+ config.client_id = ENV['ZEEBE_CLIENT_ID']
93
+ config.client_secret = ENV['ZEEBE_CLIENT_SECRET']
30
94
  config.zeebe_url = ENV['ZEEBE_URL']
31
95
  config.auth_url = ENV['ZEEBE_AUTHORIZATION_SERVER_URL']
96
+ config.audience = ENV['ZEEBE_AUDIENCE']
97
+ config.graphql_url = ENV['GRAPHQL_URL']
98
+ end
99
+ ```
100
+
101
+ Then open the `slack.rb` file and copy the following
102
+
103
+ ```ruby
104
+ Slack.configure do |config|
105
+ config.token = ENV['SLACK_OAUTH_TOKEN']
106
+ end
107
+ ```
108
+
109
+ Note: this assumes you're using ENV variables, you can of course edit this to use something like `Settings.key` or
110
+ how you prefer it. Just make sure not to publish your secrets.
111
+
112
+ ### Deploy the diagram to your Camunda Cloud cluster
113
+ You can either import the [bpmn model example](/diagrams/demo.bpmn) as a diagram in your Camunda Cloud and
114
+ use the UI to deploy or you can start a console (`rails console`) and deploy the diagram with the gem.
115
+
116
+ ```ruby
117
+ Cloudmunda.client.deploy_process(processes: [name: "demo", definition: File.read('diagrams/demo.bpmn')])
118
+ ```
119
+
120
+ ### Create a worker
121
+
122
+ In `app/jobs` create a new file `demo_worker_job.rb` and copy paste the following:
123
+
124
+ ```ruby
125
+ class DemoWorkerJob
126
+ include ::Cloudmunda::Worker
127
+
128
+ type 'webhook-slack-announce'
129
+ max_jobs_to_activate 20
130
+ poll_interval 1
131
+ timeout 45
132
+
133
+ attr_reader :variables
134
+
135
+ def process(job)
136
+ slack_client.chat_postMessage(channel: '#general', text: 'a message', as_user: true)
137
+ end
138
+
139
+ private
140
+
141
+ def slack_client
142
+ @slack_client ||= ::Slack::Web::Client.new
143
+ end
32
144
  end
33
145
  ```
34
146
 
147
+ ### Setup the "webhook"
148
+ Add the following to your `routes.rb` file `get 'webhook/received', to: 'webhook#received'` and then create a file
149
+ `webhooks_controller.rb` in the controllers directory and copy paste the following:
150
+
151
+ ```ruby
152
+ class WebhookController < ApplicationController
153
+ def received
154
+ Cloudmunda.client.create_process_instance(
155
+ bpmnProcessId: 'cloudmunda-demo',
156
+ version: 1,
157
+ variables: {text: "hello"}.to_json
158
+ )
159
+
160
+ head :ok
161
+ end
162
+ end
163
+ ```
164
+
165
+ #### Run everything
166
+
167
+ Now everything should be able to execute. Lets start your rails server and then in another terminal tab run the following:
168
+
169
+ ````ruby
170
+ bundle exec cloudmunda \
171
+ --require .
172
+ --client-id $ZEEBE_CLIENT_ID \
173
+ --client-secret $ZEEBE_CLIENT_SECRET \
174
+ --zeebe-url $ZEEBE_URL \
175
+ --zeebe-auth-url $ZEEBE_AUTHORIZATION_SERVER_URL \
176
+ --audience $ZEEBE_AUDIENCE
177
+ ````
178
+
179
+ Then navigate to `localhost:3000/webhook/received`, what will happen is the following:
180
+ 1. It goes to the `received` endpoint in the `WebhookController`
181
+ 2. Here a new process instance is created on Camunda Cloud
182
+ 3. This will then trigger the next step in the diagram, which is the service task
183
+ 4. Through the grpc protocol our worker is linked with this service task and will be executed.
35
184
 
36
185
  ## Development
37
186
 
@@ -42,6 +191,11 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
42
191
  ## Contributing
43
192
 
44
193
  Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/cloudmunda. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/cloudmunda/blob/main/CODE_OF_CONDUCT.md).
194
+ Looking for:
195
+ - unit testing: currently nothing is tested
196
+ - additional API endpoints
197
+ - additional graphQL endpoints
198
+ - general improvements
45
199
 
46
200
  ## License
47
201
 
@@ -50,3 +204,9 @@ The gem is available as open source under the terms of the [MIT License](https:/
50
204
  ## Code of Conduct
51
205
 
52
206
  Everyone interacting in the Cloudmunda project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/cloudmunda/blob/main/CODE_OF_CONDUCT.md).
207
+
208
+ ## Credits
209
+
210
+ This gem is build on top of what [@gottfrois](https://github.com/gottfrois/) had build in his [beez](https://github.com/gottfrois/beez)
211
+ gem. Everything in this gem related to the Ruby workers is a taken from that gem. 👏 Cloudmunda would **not** be
212
+ possible without this.
data/Rakefile CHANGED
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- require "rubocop/rake_task"
8
+ require 'rubocop/rake_task'
9
9
 
10
10
  RuboCop::RakeTask.new
11
11
 
data/bin/console CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require "bundler/setup"
5
- require "cloudmunda"
4
+ require 'bundler/setup'
5
+ require 'cloudmunda'
6
6
 
7
7
  # You can add fixtures and/or initialization code here to make experimenting
8
8
  # with your gem easier. You can also use a different console, if you like.
@@ -11,5 +11,5 @@ require "cloudmunda"
11
11
  # require "pry"
12
12
  # Pry.start
13
13
 
14
- require "irb"
14
+ require 'irb'
15
15
  IRB.start(__FILE__)