stenotype 0.1.1 → 0.1.2
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +3 -3
- data/README.md +29 -13
- data/lib/generators/stenotype/initializer/templates/initializer.rb.erb +65 -59
- data/lib/stenotype/adapters/base.rb +1 -1
- data/lib/stenotype/adapters/google_cloud.rb +7 -7
- data/lib/stenotype/adapters/stdout_adapter.rb +7 -2
- data/lib/stenotype/emitter.rb +21 -17
- data/lib/stenotype/event.rb +13 -13
- data/lib/stenotype/event_serializer.rb +6 -6
- data/lib/stenotype/frameworks/rails/action_controller.rb +6 -5
- data/lib/stenotype/frameworks/rails/active_job.rb +2 -2
- data/lib/stenotype/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b998a75c7aef576ca3040ad7cd7a07082fddc9cd937b57e3d3e84d807124aba
|
4
|
+
data.tar.gz: 29d5bc462c420c881eeeeca851146c74e8f6db1240de777d8e19ca0806274fdd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71094a00ecce450e4e2edbbda1327cf2f794c52d5d64bd304b67ec5f2498e49020c0ed4f2a07bc9425d5df8929ebe2d809447ea4b52baca0eb6569af27fcf22a
|
7
|
+
data.tar.gz: 1874d642a66cc7a2771fd78e92a2dc3e7aaea9ea520055cc2b7abe5bb2f9bf51dce5989e1498352411d134a371ec8b546ded1e8cb8e3d75b7408eaa340d06cbd
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
*Release Date*: 2019/11/21
|
4
4
|
|
5
|
+
### 0.1.2: 2019/12/10
|
6
|
+
|
7
|
+
* 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
|
8
|
+
* Makes StdoutAdapter more informative by adding a special line for every entry in the log.
|
9
|
+
* Fixes Rails initializer not working after switching to Configurable from Spicerack.
|
10
|
+
|
5
11
|
### 0.1.1: 2019/11/25
|
6
12
|
|
7
13
|
* Moves all error into top level namespace definition file.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
stenotype (0.1.
|
4
|
+
stenotype (0.1.2)
|
5
5
|
activesupport (>= 5.0.0)
|
6
6
|
google-cloud-pubsub (~> 1.0.0)
|
7
7
|
spicery (>= 0.19.0, < 1.0)
|
@@ -96,7 +96,7 @@ GEM
|
|
96
96
|
googleauth (~> 0.9)
|
97
97
|
grpc (~> 1.24)
|
98
98
|
rly (~> 0.2.3)
|
99
|
-
google-protobuf (3.11.1)
|
99
|
+
google-protobuf (3.11.1-universal-darwin)
|
100
100
|
googleapis-common-protos (1.3.9)
|
101
101
|
google-protobuf (~> 3.0)
|
102
102
|
googleapis-common-protos-types (~> 1.0)
|
@@ -110,7 +110,7 @@ GEM
|
|
110
110
|
multi_json (~> 1.11)
|
111
111
|
os (>= 0.9, < 2.0)
|
112
112
|
signet (~> 0.12)
|
113
|
-
grpc (1.25.0)
|
113
|
+
grpc (1.25.0-universal-darwin)
|
114
114
|
google-protobuf (~> 3.8)
|
115
115
|
googleapis-common-protos-types (~> 1.0)
|
116
116
|
grpc-google-iam-v1 (0.6.9)
|
data/README.md
CHANGED
@@ -32,10 +32,18 @@ Stenotype.configure do |config|
|
|
32
32
|
|
33
33
|
config.uuid_generator = SecureRandom
|
34
34
|
config.dispatcher = Stenotype::Dispatcher.new
|
35
|
-
|
36
|
-
config.
|
37
|
-
|
38
|
-
|
35
|
+
|
36
|
+
config.google_cloud do |gc_config|
|
37
|
+
gc_config.project_id = "google_cloud_project_id"
|
38
|
+
gc_config.credentials = "path_to_key_json"
|
39
|
+
gc_config.topic = "google_cloud_topic"
|
40
|
+
gc_config.async = true # either true or false
|
41
|
+
end
|
42
|
+
|
43
|
+
config.rails do |rails_config|
|
44
|
+
rails_config.enable_action_controller_ext = true
|
45
|
+
rails_config.enable_active_job_ext = true
|
46
|
+
end
|
39
47
|
end
|
40
48
|
```
|
41
49
|
|
@@ -51,21 +59,29 @@ An object that must implement method `#uuid`. Used when an event is emitted to g
|
|
51
59
|
|
52
60
|
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
61
|
|
54
|
-
#### config.
|
62
|
+
#### config.google_cloud.project_id
|
55
63
|
|
56
64
|
Google cloud project ID. Please refer to Google Cloud management console to get one.
|
57
65
|
|
58
|
-
#### config.
|
66
|
+
#### config.google_cloud.credentials
|
59
67
|
|
60
68
|
Google cloud credentials. Might be obtained from Google Cloud management console.
|
61
69
|
|
62
|
-
#### config.
|
70
|
+
#### config.google_cloud.topic
|
63
71
|
|
64
72
|
Google Cloud topic used for publishing the events.
|
65
73
|
|
66
|
-
#### config.
|
74
|
+
#### config.google_cloud.async
|
75
|
+
|
76
|
+
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.
|
77
|
+
|
78
|
+
#### config.rails.enable_action_controller_ext
|
79
|
+
|
80
|
+
Allows to enable/disable Rails ActionController extension
|
81
|
+
|
82
|
+
#### config.rails.enable_active_job_ext
|
67
83
|
|
68
|
-
|
84
|
+
Allows to enable/disable Rails ActiveJob extension
|
69
85
|
|
70
86
|
#### Configuring context handlers
|
71
87
|
|
@@ -76,8 +92,8 @@ Each event is emitted in a context which might be an ActionController instance o
|
|
76
92
|
Emitting an event is as simple as:
|
77
93
|
```ruby
|
78
94
|
Stenotype::Event.emit!(
|
79
|
-
|
80
|
-
|
95
|
+
"Event Name",
|
96
|
+
{ attr1: :value1, attr2: :value2 },
|
81
97
|
eval_context: { name_of_registered_context_handler: context_object }
|
82
98
|
)
|
83
99
|
```
|
@@ -172,9 +188,9 @@ Stenotype::ContextHandlers.register CustomHandler
|
|
172
188
|
class PlainRubyClass < BaseClass
|
173
189
|
def some_method(data)
|
174
190
|
event_data = collect_some_data_as_a_hash
|
175
|
-
emit_event(event_data) # method name will be `some_method`, eval_context: { klass: self }
|
191
|
+
emit_event("event_name", event_data) # method name will be `some_method`, eval_context: { klass: self }
|
176
192
|
other_event_data = do_something_else
|
177
|
-
emit_event(other_event_data, method: :custom_method_name, eval_context: { overriden_handler: self })
|
193
|
+
emit_event("other_event_name", other_event_data, method: :custom_method_name, eval_context: { overriden_handler: self })
|
178
194
|
end
|
179
195
|
end
|
180
196
|
```
|
@@ -1,65 +1,71 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Rails.application.configure do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
4
|
+
Stenotype.configure do |config|
|
5
|
+
#
|
6
|
+
# Stenotype allows you to emit events which are then being published to a list of
|
7
|
+
# targets. Currently two targets are provided by default: Google Cloud Pub Sub and
|
8
|
+
# STDOUT for debug purposes.
|
9
|
+
#
|
10
|
+
# There is also a rails integration module which defines a handy DSL
|
11
|
+
# for triggering events in various Rails components. ActionController and
|
12
|
+
# ActiveJob are supported at the time of writing.
|
13
|
+
#
|
14
|
+
# Both extensions for Rails are enabled by default, but there are config options
|
15
|
+
# to control their presence.
|
16
|
+
# config.rails do |rails_modules|
|
17
|
+
# rails_modules.enable_action_controller_ext = true
|
18
|
+
# rails_modules.enable_active_job_ext = true
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
#
|
22
|
+
# To make publishing possible one must specify a list of targets. You could use
|
23
|
+
# StdoutAdapter for debug purposes before switching to a production publisher.
|
24
|
+
# By default the list of targets is empty and you'll get an error saying
|
25
|
+
# that no targets are specified.
|
26
|
+
#
|
27
|
+
# A config option is available for setting up the targets:
|
28
|
+
#
|
29
|
+
# config.targets = [Stenotype::Adapters::StdoutAdapter.new]
|
30
|
+
#
|
31
|
+
# Or using Google Cloud:
|
32
|
+
#
|
33
|
+
# config.targets = [Stenotype::Adapters::GoogleCloud.new]
|
34
|
+
#
|
35
|
+
# Or both:
|
36
|
+
#
|
37
|
+
# config.targets = [
|
38
|
+
# Stenotype::Adapters::StdoutAdapter.new,
|
39
|
+
# Stenotype::Adapters::GoogleCloud.new
|
40
|
+
# ]
|
41
|
+
#
|
42
|
+
# To be able to use Google Cloud one has to specify Google Cloud credentials:
|
43
|
+
#
|
44
|
+
# config.google_cloud do |gc_config|
|
45
|
+
# gc_config.credentials = "SPECIFY YOUR CREDENTIALS" # path/to/key.json
|
46
|
+
# gc_config.project_id = "SPECIFY YOUR PROJECT ID"
|
47
|
+
# gc_config.topic = "SPECIFY YOUR TOPIC"
|
48
|
+
# gc_config.async = true
|
49
|
+
# end
|
50
|
+
#
|
51
|
+
# Each event is shipped with a UUID generated with SecureRandom by default.
|
52
|
+
# This might be changed by using a corresponding config option. Note that
|
53
|
+
# uuid_generator expects method #uuid to be implemented
|
54
|
+
#
|
55
|
+
# config.uuid_generator = SecureRandom
|
56
|
+
#
|
57
|
+
# In rare cases you might want to get control over how the event is being dispatched.
|
58
|
+
# Dispatcher must implement instance method #publish.
|
59
|
+
# Which dispatcher to use is controlled by the following config option:
|
60
|
+
#
|
61
|
+
# config.dispatcher = Stenotype::Dispatcher
|
62
|
+
#
|
63
|
+
# Add your own context handlers
|
64
|
+
#
|
65
|
+
# Stenotype::ContextHandlers.register Your::Custom::HandlerClass
|
66
|
+
#
|
67
|
+
end
|
62
68
|
end
|
63
69
|
|
64
70
|
# For more usage instructions please refer to either README.md or yard documentation
|
65
|
-
# in gem repository https://github.com/Freshly/stenotype
|
71
|
+
# in gem repository https://github.com/Freshly/stenotype
|
@@ -37,7 +37,7 @@ module Stenotype
|
|
37
37
|
# @abstract
|
38
38
|
# @raise [NotImplementedError] unless implemented in a subclass
|
39
39
|
#
|
40
|
-
def publish(_event_data, **
|
40
|
+
def publish(_event_data, **_additional_attrs)
|
41
41
|
raise NotImplementedError,
|
42
42
|
"#{self.class.name} must implement method #publish"
|
43
43
|
end
|
@@ -48,22 +48,22 @@ module Stenotype
|
|
48
48
|
# # publishes to default CustomGCClient
|
49
49
|
# google_cloud_adapter.publish({ event: :data }, { additional: :data })
|
50
50
|
#
|
51
|
-
def publish(event_data, **
|
51
|
+
def publish(event_data, **additional_attrs)
|
52
52
|
if config.async
|
53
|
-
publish_async(event_data, **
|
53
|
+
publish_async(event_data, **additional_attrs)
|
54
54
|
else
|
55
|
-
publish_sync(event_data, **
|
55
|
+
publish_sync(event_data, **additional_attrs)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
private
|
60
60
|
|
61
|
-
def publish_sync(event_data, **
|
62
|
-
topic.publish(event_data,
|
61
|
+
def publish_sync(event_data, **additional_attrs)
|
62
|
+
topic.publish(event_data, additional_attrs)
|
63
63
|
end
|
64
64
|
|
65
|
-
def publish_async(event_data, **
|
66
|
-
topic.publish_async(event_data,
|
65
|
+
def publish_async(event_data, **additional_attrs)
|
66
|
+
topic.publish_async(event_data, additional_attrs) do |result|
|
67
67
|
raise Stenotype::MessageNotPublishedError unless result.succeeded?
|
68
68
|
end
|
69
69
|
end
|
@@ -31,8 +31,13 @@ module Stenotype
|
|
31
31
|
# adapter = Stenotype::Adapters::StdoutAdapter.new(client: STDERR)
|
32
32
|
# adapter.publish({ event: :data }, { additional: :data })
|
33
33
|
#
|
34
|
-
def publish(event_data, **
|
35
|
-
client.info(
|
34
|
+
def publish(event_data, **additional_attrs)
|
35
|
+
client.info("[Stenotype::Event] emitted with the following attributes") do
|
36
|
+
{
|
37
|
+
**event_data,
|
38
|
+
**additional_attrs,
|
39
|
+
}
|
40
|
+
end
|
36
41
|
end
|
37
42
|
|
38
43
|
private
|
data/lib/stenotype/emitter.rb
CHANGED
@@ -33,11 +33,12 @@ module Stenotype
|
|
33
33
|
end
|
34
34
|
|
35
35
|
#
|
36
|
-
# @!method emit_event(
|
36
|
+
# @!method emit_event(name, attributes = {}, method: caller_locations.first.label, eval_context: nil)
|
37
37
|
# A method injected into target class to manually track events
|
38
38
|
# @!scope instance
|
39
|
-
# @param
|
40
|
-
# @param
|
39
|
+
# @param name {[String, Symbol]} Event name.
|
40
|
+
# @param attributes {Hash} Data to be sent to the targets.
|
41
|
+
# @param method {String} An optional method name.
|
41
42
|
# @param eval_context {Hash} A hash linking object to context handler
|
42
43
|
# @return {Stenotype::Event} An instance of emitted event
|
43
44
|
# @example Usage of emit_event
|
@@ -91,15 +92,14 @@ module Stenotype
|
|
91
92
|
#
|
92
93
|
def self.build_instance_methods(instance_mod)
|
93
94
|
instance_mod.module_eval <<-RUBY, __FILE__, __LINE__ + 1
|
94
|
-
def emit_event(
|
95
|
+
def emit_event(event_name, attributes = {}, method: caller_locations.first.label, eval_context: nil)
|
95
96
|
Stenotype::Event.emit!(
|
97
|
+
event_name,
|
96
98
|
{
|
97
|
-
type: "
|
98
|
-
**data,
|
99
|
-
},
|
100
|
-
options: {
|
99
|
+
type: "instance_method",
|
101
100
|
class: self.class.name,
|
102
|
-
method: method.to_sym
|
101
|
+
method: method.to_sym,
|
102
|
+
**attributes,
|
103
103
|
},
|
104
104
|
eval_context: (eval_context || { klass: self })
|
105
105
|
)
|
@@ -120,12 +120,14 @@ module Stenotype
|
|
120
120
|
proxy.module_eval do
|
121
121
|
define_method(method) do |*args, **rest_args, &block|
|
122
122
|
Stenotype::Event.emit!(
|
123
|
-
|
124
|
-
|
123
|
+
# @todo How do we name such events?
|
124
|
+
"instance_method",
|
125
|
+
{
|
126
|
+
type: "instance_method",
|
125
127
|
class: self.class.name,
|
126
|
-
method: __method__
|
128
|
+
method: __method__,
|
127
129
|
},
|
128
|
-
eval_context: { klass: self }
|
130
|
+
eval_context: { klass: self },
|
129
131
|
)
|
130
132
|
super(*args, **rest_args, &block)
|
131
133
|
end
|
@@ -142,12 +144,14 @@ module Stenotype
|
|
142
144
|
proxy.module_eval do
|
143
145
|
define_method(method) do |*args, **rest_args, &block|
|
144
146
|
Stenotype::Event.emit!(
|
145
|
-
|
146
|
-
|
147
|
+
# @todo How do we name such events?
|
148
|
+
"class_method",
|
149
|
+
{
|
150
|
+
type: "class_method",
|
147
151
|
class: self.name,
|
148
|
-
method: __method__
|
152
|
+
method: __method__,
|
149
153
|
},
|
150
|
-
eval_context: { klass: self }
|
154
|
+
eval_context: { klass: self },
|
151
155
|
)
|
152
156
|
super(*args, **rest_args, &block)
|
153
157
|
end
|
data/lib/stenotype/event.rb
CHANGED
@@ -11,19 +11,19 @@ module Stenotype
|
|
11
11
|
# @example Emit an event using class method
|
12
12
|
# Stenotype::Event.emit!(data, options, eval_context)
|
13
13
|
#
|
14
|
-
# @param
|
15
|
-
# @param
|
16
|
-
# @param
|
17
|
-
# @param dispatcher {#publish} A dispatcher object responding to [#publish]
|
14
|
+
# @param {[String, Symbol]} name Event name.
|
15
|
+
# @param {Hash} attributes Data to be published to the targets.
|
16
|
+
# @param {Hash} eval_context A context having handler defined in {Stenotype::ContextHandlers}.
|
17
|
+
# @param dispatcher {#publish} A dispatcher object responding to [#publish].
|
18
18
|
# @return {Stenotype::Event} An instance of {Stenotype::Event}
|
19
19
|
#
|
20
|
-
def self.emit!(
|
21
|
-
event = new(
|
20
|
+
def self.emit!(name, attributes = {}, eval_context: {}, dispatcher: Stenotype.config.dispatcher)
|
21
|
+
event = new(name, attributes, eval_context: eval_context, dispatcher: dispatcher)
|
22
22
|
event.emit!
|
23
23
|
event
|
24
24
|
end
|
25
25
|
|
26
|
-
attr_reader :
|
26
|
+
attr_reader :name, :attributes, :eval_context, :dispatcher
|
27
27
|
|
28
28
|
#
|
29
29
|
# @example Create an event
|
@@ -31,15 +31,15 @@ module Stenotype
|
|
31
31
|
# @example Create an event with custom dispatcher
|
32
32
|
# event = Stenotype::Event.new(data, options, eval_context, dispatcher: MyDispatcher.new)
|
33
33
|
#
|
34
|
-
# @param {
|
35
|
-
# @param {Hash}
|
34
|
+
# @param {[String, Symbol]} name Event name.
|
35
|
+
# @param {Hash} attributes Data to be published to the targets.
|
36
36
|
# @param {Hash} eval_context A context having handler defined in {Stenotype::ContextHandlers}.
|
37
37
|
# @param dispatcher {#publish} A dispatcher object responding to [#publish].
|
38
38
|
# @return {Stenotype::Event} An instance of event
|
39
39
|
#
|
40
|
-
def initialize(
|
41
|
-
@
|
42
|
-
@
|
40
|
+
def initialize(name, attributes = {}, eval_context: {}, dispatcher: Stenotype.config.dispatcher)
|
41
|
+
@name = name
|
42
|
+
@attributes = attributes
|
43
43
|
@eval_context = eval_context
|
44
44
|
@dispatcher = dispatcher.new
|
45
45
|
end
|
@@ -48,7 +48,7 @@ module Stenotype
|
|
48
48
|
# Emits a {Stenotype::Event}.
|
49
49
|
#
|
50
50
|
# @example Emit an instance of event
|
51
|
-
# event = Stenotype::Event.new(
|
51
|
+
# event = Stenotype::Event.new('events_name', { key: :value }, eval_context: { controller: ctrl })
|
52
52
|
# event.emit! #=> Publishes the event to targets
|
53
53
|
#
|
54
54
|
def emit!
|
@@ -42,8 +42,8 @@ module Stenotype
|
|
42
42
|
#
|
43
43
|
def serialize
|
44
44
|
{
|
45
|
-
|
46
|
-
**
|
45
|
+
name: event_name,
|
46
|
+
**event_attributes,
|
47
47
|
**default_options,
|
48
48
|
**eval_context_options,
|
49
49
|
}
|
@@ -51,12 +51,12 @@ module Stenotype
|
|
51
51
|
|
52
52
|
private
|
53
53
|
|
54
|
-
def
|
55
|
-
event.
|
54
|
+
def event_name
|
55
|
+
event.name
|
56
56
|
end
|
57
57
|
|
58
|
-
def
|
59
|
-
event.
|
58
|
+
def event_attributes
|
59
|
+
event.attributes
|
60
60
|
end
|
61
61
|
|
62
62
|
def eval_context
|
@@ -20,10 +20,11 @@ module Stenotype
|
|
20
20
|
|
21
21
|
#
|
22
22
|
# Emits and event with given data
|
23
|
-
# @param
|
23
|
+
# @param name {[String, Symbol]} Event name
|
24
|
+
# @todo What is really the name here?
|
24
25
|
#
|
25
|
-
def _record_freshly_event(
|
26
|
-
Stenotype::Event.emit!(
|
26
|
+
def _record_freshly_event(name)
|
27
|
+
Stenotype::Event.emit!(name, { type: "controller_action" }, { eval_context: { controller: self }})
|
27
28
|
end
|
28
29
|
|
29
30
|
#
|
@@ -72,7 +73,7 @@ module Stenotype
|
|
72
73
|
return if delta.empty?
|
73
74
|
|
74
75
|
before_action only: delta do
|
75
|
-
_record_freshly_event(
|
76
|
+
_record_freshly_event("view")
|
76
77
|
end
|
77
78
|
|
78
79
|
_tracked_actions.merge(delta)
|
@@ -110,7 +111,7 @@ module Stenotype
|
|
110
111
|
return if delta.empty?
|
111
112
|
|
112
113
|
before_action only: delta.to_a do
|
113
|
-
_record_freshly_event(
|
114
|
+
_record_freshly_event("view")
|
114
115
|
end
|
115
116
|
|
116
117
|
# merge is a mutating op
|
@@ -35,9 +35,9 @@ module Stenotype
|
|
35
35
|
proxy.module_eval do
|
36
36
|
define_method(:perform) do |*args, **rest_args, &block|
|
37
37
|
Stenotype::Event.emit!(
|
38
|
+
"active_job_#{self.class.name}",
|
38
39
|
{ type: "active_job" },
|
39
|
-
{
|
40
|
-
eval_context: { active_job: self }},
|
40
|
+
{ eval_context: { active_job: self }},
|
41
41
|
)
|
42
42
|
super(*args, **rest_args, &block)
|
43
43
|
end
|
data/lib/stenotype/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stenotype
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Kapitonov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|