stenotype 0.1.0 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +3 -2
  4. data/CHANGELOG.md +43 -0
  5. data/Gemfile +1 -1
  6. data/Gemfile.lock +111 -60
  7. data/README.md +48 -17
  8. data/Rakefile +2 -2
  9. data/TODO.md +18 -0
  10. data/bin/console +3 -3
  11. data/lib/generators/USAGE +8 -0
  12. data/lib/generators/stenotype/initializer/initializer_generator.rb +23 -0
  13. data/lib/generators/stenotype/initializer/templates/initializer.rb.erb +82 -0
  14. data/lib/stenotype.rb +24 -85
  15. data/lib/stenotype/adapters.rb +3 -3
  16. data/lib/stenotype/adapters/base.rb +25 -2
  17. data/lib/stenotype/adapters/google_cloud.rb +70 -22
  18. data/lib/stenotype/adapters/stdout_adapter.rb +36 -2
  19. data/lib/stenotype/at_exit.rb +8 -0
  20. data/lib/stenotype/configuration.rb +127 -36
  21. data/lib/stenotype/context_handlers.rb +6 -8
  22. data/lib/stenotype/context_handlers/base.rb +14 -3
  23. data/lib/stenotype/context_handlers/collection.rb +78 -34
  24. data/lib/stenotype/context_handlers/rails/active_job.rb +3 -11
  25. data/lib/stenotype/context_handlers/rails/controller.rb +10 -11
  26. data/lib/stenotype/dispatcher.rb +1 -2
  27. data/lib/stenotype/emitter.rb +166 -0
  28. data/lib/stenotype/event.rb +48 -25
  29. data/lib/stenotype/event_serializer.rb +31 -11
  30. data/lib/stenotype/frameworks/rails/action_controller.rb +44 -21
  31. data/lib/stenotype/frameworks/rails/active_job.rb +3 -5
  32. data/lib/stenotype/railtie.rb +37 -0
  33. data/lib/stenotype/version.rb +1 -1
  34. data/stenotype.gemspec +30 -26
  35. metadata +70 -19
  36. data/lib/stenotype/exceptions.rb +0 -31
  37. data/lib/stenotype/frameworks/object_ext.rb +0 -145
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 714f7d5fce3afe07cb1f49653fc44410ca0570086a310c8aead9b88229981f08
4
- data.tar.gz: 7f69e3448a22a9d1094dbab6a783e206ac36a5c22c1eb10db3f25180ce07d167
3
+ metadata.gz: d77ba29ea50a26b7a8592149629d6a58368b56a615246ebaff36ade2a8a9f3a7
4
+ data.tar.gz: d519ef0ee071b97d6ff3dbed088f06b18826adbfdadcddaf89019c230b1aecb3
5
5
  SHA512:
6
- metadata.gz: 5ac72dfb39d13e86dfee3617cbef85e06dec175541af1ec681298b74c970f0ef54f4e48a434b305778bc49c219604b6d3eeab3d444a9a670a4db8873ad7a0c94
7
- data.tar.gz: 399afa50ff49b2b6b163a07345064193f3bdc18cb20719adb55b1ace92b6cafcedf3128f430df033e597836524138bce7f82134671378f113786e7e1f3948fe3
6
+ metadata.gz: b59b094ef4c1379a2771f78fef83639040fedc62a0a2d2fb9209c50060e2c96856ea26fd28090a5788a06c4d97942b78c954df1eba861d4fbdd07d675f91d60e
7
+ data.tar.gz: dfca37efc78a9063d8a239e27b2ed36a6b2ae981c330b072a2b3b43b46c9359323f4fd1ac790096c1458a38e860519ceb972f84ef9f9e12f2788b77d96c11709
data/.gitignore CHANGED
@@ -11,3 +11,6 @@
11
11
  .rspec_status
12
12
  /.rakeTasks
13
13
  /.idea
14
+
15
+ # rbenv
16
+ .ruby-version
data/.rubocop.yml CHANGED
@@ -2,5 +2,6 @@ inherit_gem:
2
2
  spicerack-styleguide:
3
3
  - rubocop.yml
4
4
 
5
- AllCops:
6
- TargetRubyVersion: 2.6
5
+ # Disabled since ApplicationJob is only defined in a real application
6
+ Rails/ApplicationJob:
7
+ Enabled: false
data/CHANGELOG.md ADDED
@@ -0,0 +1,43 @@
1
+ # Changelog
2
+
3
+ *Release Date*: 2020/01/13
4
+
5
+ ### 0.1.5 2020/01/13
6
+ * In case `graceful_error_handling` is set to off raise a generic `Stenotype::Error` on any exception in order to intercept a single error type in the client code.
7
+ * Adds an `at_exit` hook to flush the async message queue when using the library in async mode.
8
+
9
+ ### 0.1.4 2020/01/10
10
+ * Adds a new configuration option `graceful_error_handling` to suppress errors raised from the gem's internals yet logging the error to specified `config.logger`
11
+
12
+ ### 0.1.3: 2020/01/10
13
+ * Adds a new configuration option `logger` to use during error handling
14
+ * Adds a new config option `Stenotype.config.enabled`. If the option is set to false then event is not going to be published. The option is `true` by default.
15
+
16
+ ### 0.1.2: 2019/12/10
17
+
18
+ * Changes the interface of how event is emitted. Now you must pass `event_name`, `attributes` and optional `eval_context`. Note that `additional_options` are eliminated
19
+ * Makes StdoutAdapter more informative by adding a special line for every entry in the log.
20
+ * Fixes Rails initializer not working after switching to Configurable from Spicerack.
21
+
22
+ ### 0.1.1: 2019/11/25
23
+
24
+ * Moves all error into top level namespace definition file.
25
+ * Introduces a root class for all gem specific errors.
26
+ * Renames ObjectExt to an Eventable concern.
27
+ * Changes the aggressive extension of Object, forces a user to include the Eventable module only where necessary.
28
+ * Moves all rails specific logic into a Railtie, which is required only if in Rails universe.
29
+ * Adds more examples to yard documentation of the classes.
30
+ * Adds a TODO list based on the feedback.
31
+ * Grinds a huge GoogleCloud adapter method into smaller ones.
32
+ * Add two 'on/off' configuration options for Rails specific components.
33
+ * Switches to using rails specific delegate method where possible (in rails components extensions).
34
+
35
+ ### 0.1.0: The Big Bang
36
+
37
+ * Rails controller and active job adapters
38
+ * Generic event method
39
+ * Handlers for GCP Pub/Sub and STDOUT
40
+ * Initial commit
41
+
42
+
43
+
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source 'https://rubygems.org'
3
+ source "https://rubygems.org"
4
4
 
5
5
  group :development, :test do
6
6
  gem "rspice"
data/Gemfile.lock CHANGED
@@ -1,50 +1,51 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stenotype (0.1.0)
4
+ stenotype (0.1.6)
5
5
  activesupport (>= 5.0.0)
6
6
  google-cloud-pubsub (~> 1.0.0)
7
+ spicery (>= 0.19.0, < 1.0)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
11
- actioncable (5.2.3)
12
- actionpack (= 5.2.3)
12
+ actioncable (5.2.4)
13
+ actionpack (= 5.2.4)
13
14
  nio4r (~> 2.0)
14
15
  websocket-driver (>= 0.6.1)
15
- actionmailer (5.2.3)
16
- actionpack (= 5.2.3)
17
- actionview (= 5.2.3)
18
- activejob (= 5.2.3)
16
+ actionmailer (5.2.4)
17
+ actionpack (= 5.2.4)
18
+ actionview (= 5.2.4)
19
+ activejob (= 5.2.4)
19
20
  mail (~> 2.5, >= 2.5.4)
20
21
  rails-dom-testing (~> 2.0)
21
- actionpack (5.2.3)
22
- actionview (= 5.2.3)
23
- activesupport (= 5.2.3)
22
+ actionpack (5.2.4)
23
+ actionview (= 5.2.4)
24
+ activesupport (= 5.2.4)
24
25
  rack (~> 2.0)
25
26
  rack-test (>= 0.6.3)
26
27
  rails-dom-testing (~> 2.0)
27
28
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
28
- actionview (5.2.3)
29
- activesupport (= 5.2.3)
29
+ actionview (5.2.4)
30
+ activesupport (= 5.2.4)
30
31
  builder (~> 3.1)
31
32
  erubi (~> 1.4)
32
33
  rails-dom-testing (~> 2.0)
33
34
  rails-html-sanitizer (~> 1.0, >= 1.0.3)
34
- activejob (5.2.3)
35
- activesupport (= 5.2.3)
35
+ activejob (5.2.4)
36
+ activesupport (= 5.2.4)
36
37
  globalid (>= 0.3.6)
37
- activemodel (5.2.3)
38
- activesupport (= 5.2.3)
39
- activerecord (5.2.3)
40
- activemodel (= 5.2.3)
41
- activesupport (= 5.2.3)
38
+ activemodel (5.2.4)
39
+ activesupport (= 5.2.4)
40
+ activerecord (5.2.4)
41
+ activemodel (= 5.2.4)
42
+ activesupport (= 5.2.4)
42
43
  arel (>= 9.0)
43
- activestorage (5.2.3)
44
- actionpack (= 5.2.3)
45
- activerecord (= 5.2.3)
44
+ activestorage (5.2.4)
45
+ actionpack (= 5.2.4)
46
+ activerecord (= 5.2.4)
46
47
  marcel (~> 0.3.1)
47
- activesupport (5.2.3)
48
+ activesupport (5.2.4)
48
49
  concurrent-ruby (~> 1.0, >= 1.0.2)
49
50
  i18n (>= 0.7, < 2)
50
51
  minitest (~> 5.1)
@@ -52,17 +53,29 @@ GEM
52
53
  addressable (2.7.0)
53
54
  public_suffix (>= 2.0.2, < 5.0)
54
55
  arel (9.0.0)
56
+ around_the_world (0.19.2)
57
+ activesupport (>= 5.2.1)
55
58
  ast (2.4.0)
56
59
  builder (3.2.3)
57
60
  coderay (1.1.2)
61
+ collectible (0.19.2)
62
+ activesupport (>= 5.2.1)
63
+ short_circu_it (= 0.19.2)
64
+ tablesalt (= 0.19.2)
58
65
  concurrent-ruby (1.1.5)
66
+ conjunction (0.19.2)
67
+ activesupport (>= 5.2.1)
59
68
  crass (1.0.5)
60
69
  diff-lcs (1.3)
61
70
  docile (1.3.2)
62
71
  erubi (1.9.0)
72
+ facet (0.19.2)
73
+ activesupport (>= 5.2.1)
74
+ short_circu_it (= 0.19.2)
75
+ tablesalt (= 0.19.2)
63
76
  faker (1.9.6)
64
77
  i18n (>= 0.7)
65
- faraday (0.17.0)
78
+ faraday (0.17.1)
66
79
  multipart-post (>= 1.2, < 3)
67
80
  github-markup (3.0.4)
68
81
  globalid (0.4.2)
@@ -83,7 +96,7 @@ GEM
83
96
  googleauth (~> 0.9)
84
97
  grpc (~> 1.24)
85
98
  rly (~> 0.2.3)
86
- google-protobuf (3.10.1-universal-darwin)
99
+ google-protobuf (3.11.1-universal-darwin)
87
100
  googleapis-common-protos (1.3.9)
88
101
  google-protobuf (~> 3.0)
89
102
  googleapis-common-protos-types (~> 1.0)
@@ -108,87 +121,102 @@ GEM
108
121
  jaro_winkler (1.5.4)
109
122
  json (2.2.0)
110
123
  jwt (2.2.1)
111
- loofah (2.3.1)
124
+ loofah (2.4.0)
112
125
  crass (~> 1.0.2)
113
126
  nokogiri (>= 1.5.9)
114
127
  mail (2.7.1)
115
128
  mini_mime (>= 0.1.1)
116
129
  marcel (0.3.3)
117
130
  mimemagic (~> 0.3.2)
118
- memoist (0.16.0)
131
+ memoist (0.16.2)
119
132
  method_source (0.9.2)
120
133
  mimemagic (0.3.3)
121
134
  mini_mime (1.0.2)
122
135
  mini_portile2 (2.4.0)
123
- minitest (5.12.2)
136
+ minitest (5.13.0)
124
137
  multi_json (1.14.1)
125
138
  multipart-post (2.1.1)
126
139
  nio4r (2.5.2)
127
- nokogiri (1.10.4)
140
+ nokogiri (1.10.7)
128
141
  mini_portile2 (~> 2.4.0)
129
142
  os (1.0.1)
130
- parallel (1.18.0)
143
+ parallel (1.19.1)
131
144
  parser (2.6.5.0)
132
145
  ast (~> 2.4.0)
133
146
  pry (0.12.2)
134
147
  coderay (~> 1.1.0)
135
148
  method_source (~> 0.9.0)
136
149
  public_suffix (4.0.1)
137
- rack (2.0.7)
150
+ rack (2.0.8)
138
151
  rack-test (1.1.0)
139
152
  rack (>= 1.0, < 3)
140
- rails (5.2.3)
141
- actioncable (= 5.2.3)
142
- actionmailer (= 5.2.3)
143
- actionpack (= 5.2.3)
144
- actionview (= 5.2.3)
145
- activejob (= 5.2.3)
146
- activemodel (= 5.2.3)
147
- activerecord (= 5.2.3)
148
- activestorage (= 5.2.3)
149
- activesupport (= 5.2.3)
153
+ rails (5.2.4)
154
+ actioncable (= 5.2.4)
155
+ actionmailer (= 5.2.4)
156
+ actionpack (= 5.2.4)
157
+ actionview (= 5.2.4)
158
+ activejob (= 5.2.4)
159
+ activemodel (= 5.2.4)
160
+ activerecord (= 5.2.4)
161
+ activestorage (= 5.2.4)
162
+ activesupport (= 5.2.4)
150
163
  bundler (>= 1.3.0)
151
- railties (= 5.2.3)
164
+ railties (= 5.2.4)
152
165
  sprockets-rails (>= 2.0.0)
153
166
  rails-dom-testing (2.0.3)
154
167
  activesupport (>= 4.2.0)
155
168
  nokogiri (>= 1.6)
156
169
  rails-html-sanitizer (1.3.0)
157
170
  loofah (~> 2.3)
158
- railties (5.2.3)
159
- actionpack (= 5.2.3)
160
- activesupport (= 5.2.3)
171
+ railties (5.2.4)
172
+ actionpack (= 5.2.4)
173
+ activesupport (= 5.2.4)
161
174
  method_source
162
175
  rake (>= 0.8.7)
163
176
  thor (>= 0.19.0, < 2.0)
164
177
  rainbow (3.0.0)
165
178
  rake (10.5.0)
166
179
  redcarpet (3.5.0)
180
+ redis (4.1.3)
181
+ redis_hash (0.19.2)
182
+ activesupport (>= 5.2.1)
183
+ redis (>= 3.0)
184
+ tablesalt (= 0.19.2)
167
185
  rly (0.2.3)
168
- rspec (3.8.0)
169
- rspec-core (~> 3.8.0)
170
- rspec-expectations (~> 3.8.0)
171
- rspec-mocks (~> 3.8.0)
172
- rspec-core (3.8.2)
173
- rspec-support (~> 3.8.0)
174
- rspec-expectations (3.8.4)
186
+ rspec (3.9.0)
187
+ rspec-core (~> 3.9.0)
188
+ rspec-expectations (~> 3.9.0)
189
+ rspec-mocks (~> 3.9.0)
190
+ rspec-core (3.9.0)
191
+ rspec-support (~> 3.9.0)
192
+ rspec-expectations (3.9.0)
175
193
  diff-lcs (>= 1.2.0, < 2.0)
176
- rspec-support (~> 3.8.0)
177
- rspec-mocks (3.8.1)
194
+ rspec-support (~> 3.9.0)
195
+ rspec-mocks (3.9.0)
178
196
  diff-lcs (>= 1.2.0, < 2.0)
179
- rspec-support (~> 3.8.0)
180
- rspec-support (3.8.2)
181
- rspice (0.14.2)
182
- faker (~> 1.8)
197
+ rspec-support (~> 3.9.0)
198
+ rspec-support (3.9.0)
199
+ rspice (0.19.2)
200
+ faker (>= 1.8, < 2.0)
183
201
  rspec (~> 3.0)
184
- rubocop (0.76.0)
202
+ rubocop (0.74.0)
185
203
  jaro_winkler (~> 1.5.1)
186
204
  parallel (~> 1.10)
187
205
  parser (>= 2.6)
188
206
  rainbow (>= 2.2.2, < 4.0)
189
207
  ruby-progressbar (~> 1.7)
190
208
  unicode-display_width (>= 1.4.0, < 1.7)
209
+ rubocop-performance (1.4.1)
210
+ rubocop (>= 0.71.0)
211
+ rubocop-rails (2.3.0)
212
+ rack (>= 1.1)
213
+ rubocop (>= 0.72.0)
214
+ rubocop-rspec (1.35.0)
215
+ rubocop (>= 0.60.0)
191
216
  ruby-progressbar (1.10.1)
217
+ short_circu_it (0.19.2)
218
+ activesupport (>= 5.2.1)
219
+ around_the_world (= 0.19.2)
192
220
  signet (0.12.0)
193
221
  addressable (~> 2.3)
194
222
  faraday (~> 0.9)
@@ -199,6 +227,22 @@ GEM
199
227
  json (>= 1.8, < 3)
200
228
  simplecov-html (~> 0.10.0)
201
229
  simplecov-html (0.10.2)
230
+ spicerack (0.19.2)
231
+ around_the_world (= 0.19.2)
232
+ redis_hash (= 0.19.2)
233
+ short_circu_it (= 0.19.2)
234
+ tablesalt (= 0.19.2)
235
+ technologic (= 0.19.2)
236
+ spicerack-styleguide (0.19.2)
237
+ rubocop (= 0.74)
238
+ rubocop-performance (= 1.4.1)
239
+ rubocop-rails (= 2.3.0)
240
+ rubocop-rspec (= 1.35.0)
241
+ spicery (0.19.2)
242
+ collectible (= 0.19.2)
243
+ conjunction (= 0.19.2)
244
+ facet (= 0.19.2)
245
+ spicerack (= 0.19.2)
202
246
  sprockets (4.0.0)
203
247
  concurrent-ruby (~> 1.0)
204
248
  rack (> 1, < 3)
@@ -206,6 +250,13 @@ GEM
206
250
  actionpack (>= 4.0)
207
251
  activesupport (>= 4.0)
208
252
  sprockets (>= 3.0.0)
253
+ tablesalt (0.19.2)
254
+ activemodel (>= 5.2.1)
255
+ activesupport (>= 5.2.1)
256
+ technologic (0.19.2)
257
+ activesupport (>= 5.2.1)
258
+ railties (>= 5.2.1)
259
+ short_circu_it (= 0.19.2)
209
260
  thor (0.20.3)
210
261
  thread_safe (0.3.6)
211
262
  timecop (0.9.1)
@@ -229,8 +280,8 @@ DEPENDENCIES
229
280
  redcarpet (~> 3.5)
230
281
  rspec (~> 3.0)
231
282
  rspice
232
- rubocop (~> 0.76)
233
283
  simplecov (~> 0.17)
284
+ spicerack-styleguide (>= 0.19.0, < 1.0)
234
285
  stenotype!
235
286
  timecop (~> 0.9)
236
287
  yard (~> 0.9)
data/README.md CHANGED
@@ -7,7 +7,7 @@ This gem is a tool providing extensions to several rails components in order to
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem 'Stenotype'
10
+ gem "Stenotype"
11
11
  ```
12
12
 
13
13
  And then execute:
@@ -25,24 +25,47 @@ Or install it yourself as:
25
25
  Configuring the library is as simple as:
26
26
  ```ruby
27
27
  Stenotype.configure do |config|
28
+ config.enabled = true
28
29
  config.targets = [ # Supported targets
29
30
  Stenotype::Adapters::StdoutAdapter.new,
30
31
  Stenotype::Adapters::GoogleCloud.new
31
32
  ]
32
33
 
33
- config.uuid_generator = SecureRandom
34
- config.dispatcher = Stenotype::Dispatcher.new
35
- config.gc_project_id = 'google_cloud_project_id'
36
- config.gc_credentials = 'path_to_key_json'
37
- config.gc_topic = 'google_cloud_topic'
38
- config.gc_mode = :async # either :sync or :async
34
+ config.uuid_generator = SecureRandom
35
+ config.dispatcher = Stenotype::Dispatcher.new
36
+ config.logger = Logger.new(STDOUT)
37
+ config.graceful_error_handling = true
38
+
39
+ config.google_cloud do |gc_config|
40
+ gc_config.project_id = "google_cloud_project_id"
41
+ gc_config.credentials = "path_to_key_json"
42
+ gc_config.topic = "google_cloud_topic"
43
+ gc_config.async = true # either true or false
44
+ end
45
+
46
+ config.rails do |rails_config|
47
+ rails_config.enable_action_controller_ext = true
48
+ rails_config.enable_active_job_ext = true
49
+ end
39
50
  end
40
51
  ```
41
52
 
53
+ #### config.enabled
54
+
55
+ A flag checked upon emission of an event. Will prevent event emission if set to false. An event is emitted if set to true.
56
+
42
57
  #### config.targets
43
58
 
44
59
  Contain an array of targets for the events to be published to. Targets must implement method `#publish(event_data, **additional_arguments)`.
45
60
 
61
+ #### config.logger
62
+
63
+ Specifies a logger for messages and exceptions to be output to. If not set defaults to `Logger.new(STDOUT)`, otherwise a manually set logger is used.
64
+
65
+ #### config.graceful_error_handling
66
+
67
+ This flag if set to `true` is going to suppress all `StandardError`'s raised within a gem. Raises the error to the caller if set to `false`
68
+
46
69
  #### config.uuid_generator
47
70
 
48
71
  An object that must implement method `#uuid`. Used when an event is emitted to generate a unique id for each event.
@@ -51,21 +74,29 @@ An object that must implement method `#uuid`. Used when an event is emitted to g
51
74
 
52
75
  Dispatcher used to dispatch the event. A dispatcher must implement method `#publish(even, serializer: Stenotype::EventSerializer)`. By default `Stenotype::EventSerializer` is used, which is responsible for collecting the data from the event and evaluation context.
53
76
 
54
- #### config.gc_project_id
77
+ #### config.google_cloud.project_id
55
78
 
56
79
  Google cloud project ID. Please refer to Google Cloud management console to get one.
57
80
 
58
- #### config.gc_credentials
81
+ #### config.google_cloud.credentials
59
82
 
60
83
  Google cloud credentials. Might be obtained from Google Cloud management console.
61
84
 
62
- #### config.gc_topic
85
+ #### config.google_cloud.topic
63
86
 
64
87
  Google Cloud topic used for publishing the events.
65
88
 
66
- #### config.gc_mode
89
+ #### config.google_cloud.async
90
+
91
+ Google Cloud publish mode. The mode is either sync or async. When in `sync` mode the event will be published in the same thread (which might influence performance). For `async` mode the event will be put into a pull which is going to be flushed after a threshold is met.
92
+
93
+ #### config.rails.enable_action_controller_ext
94
+
95
+ Allows to enable/disable Rails ActionController extension
96
+
97
+ #### config.rails.enable_active_job_ext
67
98
 
68
- Google Cloud publish mode. Two options are available: `:sync, :async`. When in `sync` mode the event will be published in the same thread (which might influence performance). For `async` mode the event will be put into a pull which is going to be flushed after a threshold is met.
99
+ Allows to enable/disable Rails ActiveJob extension
69
100
 
70
101
  #### Configuring context handlers
71
102
 
@@ -76,8 +107,8 @@ Each event is emitted in a context which might be an ActionController instance o
76
107
  Emitting an event is as simple as:
77
108
  ```ruby
78
109
  Stenotype::Event.emit!(
79
- data,
80
- options: additional_options,
110
+ "Event Name",
111
+ { attr1: :value1, attr2: :value2 },
81
112
  eval_context: { name_of_registered_context_handler: context_object }
82
113
  )
83
114
  ```
@@ -150,7 +181,7 @@ class BaseClass
150
181
  attr_reader :local_state
151
182
 
152
183
  def initialize
153
- @local_state = 'some state'
184
+ @local_state = "some state"
154
185
  end
155
186
  end
156
187
 
@@ -172,9 +203,9 @@ Stenotype::ContextHandlers.register CustomHandler
172
203
  class PlainRubyClass < BaseClass
173
204
  def some_method(data)
174
205
  event_data = collect_some_data_as_a_hash
175
- emit_event(event_data) # method name will be `some_method`, eval_context: { klass: self }
206
+ emit_event("event_name", event_data) # method name will be `some_method`, eval_context: { klass: self }
176
207
  other_event_data = do_something_else
177
- emit_event(other_event_data, method: :custom_method_name, eval_context: { overriden_handler: self })
208
+ emit_event("other_event_name", other_event_data, method: :custom_method_name, eval_context: { overriden_handler: self })
178
209
  end
179
210
  end
180
211
  ```