itly-plugin-snowplow 0.1.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 +7 -0
- data/.rspec +1 -0
- data/Gemfile +17 -0
- data/Steepfile +9 -0
- data/bin/console +15 -0
- data/bin/rspec +18 -0
- data/bin/setup +8 -0
- data/itly-plugin-snowplow.gemspec +32 -0
- data/lib/itly/plugin-snowplow.rb +12 -0
- data/lib/itly/plugin/snowplow/call_options.rb +64 -0
- data/lib/itly/plugin/snowplow/context.rb +27 -0
- data/lib/itly/plugin/snowplow/options.rb +37 -0
- data/lib/itly/plugin/snowplow/snowplow.rb +154 -0
- data/lib/itly/plugin/snowplow/version.rb +9 -0
- data/sig/call_options.rbs +39 -0
- data/sig/context.rbs +17 -0
- data/sig/lib/snowplow_tracker.rbs +8 -0
- data/sig/options.rbs +17 -0
- data/sig/snowplow.rbs +23 -0
- metadata +96 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 779553f73b44ead11e1d4b49e4614c4153102013a2546815ce577844b1de1384
|
4
|
+
data.tar.gz: c301b0f5f83964bd074627f29fb161485e6b14ccf698457ca147859d51e9dc0c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4875fe0a940a56388daa2cdfe627a69117d7e4ef9d8cd52a946572c8ddc2eb2b02a37fe20cb347add3d30aec32b2a499485f78036e64bdbc1e8605a601d1c6b7
|
7
|
+
data.tar.gz: 59c579f660e7e1988f523c5d18b594187dd37b67e894ead091f59c658de1902ce679c1b72a55fda6ce9c9bab65b8a44fd8ca6b549899dfdc3ca282a62e87492b
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/Gemfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
# Specify your gem's dependencies in itly-plugin-snowplow.gemspec
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
gem 'rake', '~> 13.0'
|
9
|
+
|
10
|
+
if ENV['LOCAL_ITLY_GEM']
|
11
|
+
# TODO: before publication to RubyGems, switch to version 1
|
12
|
+
gem 'itly-sdk', '~> 0.1', path: '../sdk'
|
13
|
+
end
|
14
|
+
|
15
|
+
gem 'rbs', '~> 1.0'
|
16
|
+
gem 'rspec'
|
17
|
+
gem 'steep', '~> 0.41'
|
data/Steepfile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'itly/plugin-snowplow'
|
6
|
+
|
7
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
+
# with your gem easier. You can also use a different console, if you like.
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
# require "pry"
|
12
|
+
# Pry.start
|
13
|
+
|
14
|
+
require 'irb'
|
15
|
+
IRB.start(__FILE__)
|
data/bin/rspec
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
# Configure and load RBS
|
5
|
+
unless ENV['DISABLE_TYPE_CHECKING']
|
6
|
+
ENV['RBS_TEST_TARGET'] = 'Itly::*'
|
7
|
+
ENV['RBS_TEST_LOGLEVEL'] = 'warn'
|
8
|
+
ENV['RBS_TEST_DOUBLE_SUITE'] = 'rspec'
|
9
|
+
ENV['RBS_TEST_OPT'] = '-I./sig -I../sdk/sig'
|
10
|
+
|
11
|
+
require 'rbs/test/setup'
|
12
|
+
end
|
13
|
+
|
14
|
+
# Start RSpec
|
15
|
+
require 'rspec/core'
|
16
|
+
|
17
|
+
ENV['RSPEC_RUN_FROM_SCRIPT'] = 'true'
|
18
|
+
RSpec::Core::Runner.invoke
|
data/bin/setup
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/itly/plugin/snowplow/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'itly-plugin-snowplow'
|
7
|
+
spec.version = Itly::Plugin::Snowplow::VERSION
|
8
|
+
spec.authors = ['Iteratively', 'Benjamin Bouchet', 'Justin Fiedler', 'Andrey Sokolov']
|
9
|
+
spec.email = ['support@iterative.ly']
|
10
|
+
|
11
|
+
spec.summary = 'Snowplow plugin for Iteratively SDK for Ruby'
|
12
|
+
spec.description = 'Track and validate analytics with a unified, extensible interface ' \
|
13
|
+
'that works with all your 3rd party analytics providers.'
|
14
|
+
spec.homepage = 'https://github.com/iterativelyhq/itly-sdk-ruby'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
|
17
|
+
|
18
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
|
19
|
+
|
20
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
21
|
+
spec.metadata['source_code_uri'] = 'https://github.com/iterativelyhq/itly-sdk-ruby/plugin-snowplow'
|
22
|
+
|
23
|
+
# Specify which files should be added to the gem when it is released.
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
25
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
27
|
+
end
|
28
|
+
spec.require_paths = ['lib']
|
29
|
+
|
30
|
+
spec.add_dependency 'itly-sdk', '~> 0.1'
|
31
|
+
spec.add_dependency 'snowplow-tracker', '~> 0.6'
|
32
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if ENV['LOCAL_ITLY_GEM']
|
4
|
+
lib = File.expand_path('../../../sdk/lib', File.dirname(__FILE__))
|
5
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
6
|
+
end
|
7
|
+
|
8
|
+
require_relative 'plugin/snowplow/snowplow'
|
9
|
+
require_relative 'plugin/snowplow/context'
|
10
|
+
require_relative 'plugin/snowplow/call_options'
|
11
|
+
require_relative 'plugin/snowplow/options'
|
12
|
+
require_relative 'plugin/snowplow/version'
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Itly
|
4
|
+
class Plugin
|
5
|
+
# Snowplow plugin class for Itly SDK
|
6
|
+
class Snowplow
|
7
|
+
##
|
8
|
+
# Snowplow specific plugin options class
|
9
|
+
#
|
10
|
+
class CallOptions < Itly::PluginCallOptions
|
11
|
+
end
|
12
|
+
|
13
|
+
##
|
14
|
+
# Snowplow specific plugin options class for calls to +page+
|
15
|
+
#
|
16
|
+
class PageOptions < CallOptions
|
17
|
+
attr_reader :contexts, :callback
|
18
|
+
|
19
|
+
def initialize(contexts: nil, callback: nil)
|
20
|
+
super()
|
21
|
+
@contexts = contexts
|
22
|
+
@callback = callback
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_s
|
26
|
+
class_name = self.class.name.split('::').last
|
27
|
+
contexts_str = contexts.nil? ? 'nil' : "[#{contexts.collect(&:to_s).join ', '}]"
|
28
|
+
"#<Snowplow::#{class_name} contexts: #{contexts_str} callback: #{callback.nil? ? 'nil' : 'provided'}>"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Snowplow specific plugin options class for calls to +track+
|
34
|
+
#
|
35
|
+
class TrackOptions < CallOptions
|
36
|
+
attr_reader :contexts, :callback
|
37
|
+
|
38
|
+
def initialize(contexts: nil, callback: nil)
|
39
|
+
super()
|
40
|
+
@contexts = contexts
|
41
|
+
@callback = callback
|
42
|
+
end
|
43
|
+
|
44
|
+
def to_s
|
45
|
+
class_name = self.class.name.split('::').last
|
46
|
+
contexts_str = contexts.nil? ? 'nil' : "[#{contexts.collect(&:to_s).join ', '}]"
|
47
|
+
"#<Snowplow::#{class_name} contexts: #{contexts_str} callback: #{callback.nil? ? 'nil' : 'provided'}>"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
##
|
52
|
+
# Snowplow specific plugin options class for calls to plugin methods
|
53
|
+
#
|
54
|
+
%w[Identify Group Alias].each do |name|
|
55
|
+
class_eval(
|
56
|
+
<<-EVAL, __FILE__, __LINE__ + 1
|
57
|
+
class #{name}Options < CallOptions # class IdentifyOptions < CallOptions
|
58
|
+
end # end
|
59
|
+
EVAL
|
60
|
+
)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Itly
|
4
|
+
class Plugin
|
5
|
+
class Snowplow
|
6
|
+
##
|
7
|
+
# Snowplow context to be used by CallOptions
|
8
|
+
#
|
9
|
+
class Context
|
10
|
+
attr_reader :schema, :data
|
11
|
+
|
12
|
+
def initialize(schema:, data:)
|
13
|
+
@schema = schema
|
14
|
+
@data = data
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_self_describing_json
|
18
|
+
SnowplowTracker::SelfDescribingJson.new schema, data
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_s
|
22
|
+
"#<Snowplow::Context schema: #{schema} data: #{data}>"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'itly-sdk'
|
4
|
+
|
5
|
+
class Itly
|
6
|
+
class Plugin
|
7
|
+
class Snowplow
|
8
|
+
##
|
9
|
+
# Options for the Snowplow plugin class
|
10
|
+
#
|
11
|
+
class Options
|
12
|
+
attr_reader :endpoint, :protocol, :method, :buffer_size, :disabled
|
13
|
+
|
14
|
+
##
|
15
|
+
# Instantiate a new Options
|
16
|
+
#
|
17
|
+
# @param [String] endpoint: specify the Snowplow endpoint
|
18
|
+
# @param [String] protocol: specify the protocol to connect to the Snowplow endpoint.
|
19
|
+
# Can be 'http' or 'https'. Default to 'http'
|
20
|
+
# @param [String] method: specify the HTTP verb to use when sending events to the Snowplow endpoint.
|
21
|
+
# Can be 'get' or 'post'. Default to 'get'
|
22
|
+
# @param [Integer] buffer_size: specify the buffer size before flushing event to the Snowplow endpoint.
|
23
|
+
# Leave it to +nil+ to set it's default value. Default to 1 for GET method, and 10 for POST
|
24
|
+
# @param [TrueClass/FalseClass] disabled: set to true to disable the plugin. Default to false
|
25
|
+
#
|
26
|
+
def initialize(endpoint:, protocol: 'http', method: 'get', buffer_size: nil, disabled: false)
|
27
|
+
super()
|
28
|
+
@endpoint = endpoint
|
29
|
+
@protocol = protocol
|
30
|
+
@method = method
|
31
|
+
@buffer_size = buffer_size
|
32
|
+
@disabled = disabled
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'itly-sdk'
|
4
|
+
require 'snowplow-tracker'
|
5
|
+
|
6
|
+
class Itly
|
7
|
+
class Plugin
|
8
|
+
##
|
9
|
+
# Snowplow plugin class for Itly SDK
|
10
|
+
#
|
11
|
+
class Snowplow < Plugin
|
12
|
+
attr_reader :logger, :vendor, :disabled, :client
|
13
|
+
|
14
|
+
##
|
15
|
+
# Instantiate a new Plugin::Snowplow
|
16
|
+
#
|
17
|
+
# @param [String] vendor: the Snowplow vendor
|
18
|
+
# @param [Itly::Plugin::Snowplow::Options] options: the options. See +Itly::Plugin::Snowplow::Options+
|
19
|
+
#
|
20
|
+
def initialize(vendor:, options:)
|
21
|
+
super()
|
22
|
+
@vendor = vendor
|
23
|
+
@disabled = options.disabled
|
24
|
+
|
25
|
+
emitter = SnowplowTracker::Emitter.new \
|
26
|
+
options.endpoint, protocol: options.protocol, method: options.method, buffer_size: options.buffer_size
|
27
|
+
@client = SnowplowTracker::Tracker.new emitter
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Initialize Snowplow plugin
|
32
|
+
#
|
33
|
+
# @param [Itly::PluginOptions] options: plugin options
|
34
|
+
#
|
35
|
+
def load(options:)
|
36
|
+
super
|
37
|
+
# Get options
|
38
|
+
@logger = options.logger
|
39
|
+
|
40
|
+
# Log
|
41
|
+
logger&.info "#{id}: load()"
|
42
|
+
|
43
|
+
logger&.info "#{id}: plugin is disabled!" if @disabled
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# Identify a user
|
48
|
+
#
|
49
|
+
# Raise an error if the client fails
|
50
|
+
#
|
51
|
+
# @param [String] user_id: the id of the user in your application
|
52
|
+
# @param [Hash] properties: unused
|
53
|
+
# @param [Itly::Plugin::Snowplow::IdentifyOptions] options: the plugin specific options
|
54
|
+
#
|
55
|
+
def identify(user_id:, properties: nil, options: nil)
|
56
|
+
super
|
57
|
+
return unless enabled?
|
58
|
+
|
59
|
+
# Log
|
60
|
+
log = Itly::Loggers.vars_to_log user_id: user_id, options: options
|
61
|
+
logger&.info "#{id}: identify(#{log})"
|
62
|
+
|
63
|
+
# Send through the client
|
64
|
+
client.set_user_id user_id
|
65
|
+
end
|
66
|
+
|
67
|
+
##
|
68
|
+
# Record page views
|
69
|
+
#
|
70
|
+
# Raise an error if the client fails
|
71
|
+
#
|
72
|
+
# @param [String] user_id: the id of the user in your application
|
73
|
+
# @param [String] category: the category of the page
|
74
|
+
# @param [String] name: the name of the page.
|
75
|
+
# @param [Hash] properties: the properties to pass to your application
|
76
|
+
# @param [Itly::Plugin::Snowplow::PageOptions] options: the plugin specific options
|
77
|
+
#
|
78
|
+
def page(user_id:, category: nil, name: nil, properties: nil, options: nil)
|
79
|
+
super
|
80
|
+
return unless enabled?
|
81
|
+
|
82
|
+
# Log
|
83
|
+
log = Itly::Loggers.vars_to_log(
|
84
|
+
user_id: user_id, category: category, name: name, properties: properties, options: options
|
85
|
+
)
|
86
|
+
logger&.info "#{id}: page(#{log})"
|
87
|
+
|
88
|
+
# Identify the user
|
89
|
+
client.set_user_id user_id
|
90
|
+
|
91
|
+
# Send through the client
|
92
|
+
contexts = nil
|
93
|
+
if options&.contexts.is_a?(Array) && options.contexts.any?
|
94
|
+
contexts = options.contexts.collect(&:to_self_describing_json)
|
95
|
+
end
|
96
|
+
|
97
|
+
client.track_screen_view name, nil, contexts
|
98
|
+
end
|
99
|
+
|
100
|
+
##
|
101
|
+
# Track an event
|
102
|
+
#
|
103
|
+
# Raise an error if the client fails
|
104
|
+
#
|
105
|
+
# @param [String] user_id: the id of the user in your application
|
106
|
+
# @param [Event] event: the Event object to pass to your application
|
107
|
+
# @param [Itly::Plugin::Snowplow::TrackOptions] options: the plugin specific options
|
108
|
+
#
|
109
|
+
def track(user_id:, event:, options: nil)
|
110
|
+
super
|
111
|
+
return unless enabled?
|
112
|
+
|
113
|
+
# Log
|
114
|
+
log = Itly::Loggers.vars_to_log(
|
115
|
+
user_id: user_id, event: event&.name, version: event&.version, properties: event&.properties, options: options
|
116
|
+
)
|
117
|
+
logger&.info "#{id}: track(#{log})"
|
118
|
+
|
119
|
+
# Identify the user
|
120
|
+
client.set_user_id user_id
|
121
|
+
|
122
|
+
# Send through the client
|
123
|
+
schema_version = event.version&.gsub(/\./, '-')
|
124
|
+
schema = "iglu:#{vendor}/#{event.name}/jsonschema/#{schema_version}"
|
125
|
+
|
126
|
+
event_json = SnowplowTracker::SelfDescribingJson.new(
|
127
|
+
schema, event.properties
|
128
|
+
)
|
129
|
+
|
130
|
+
contexts = nil
|
131
|
+
if options&.contexts.is_a?(Array) && options.contexts.any?
|
132
|
+
contexts = options.contexts.collect(&:to_self_describing_json)
|
133
|
+
end
|
134
|
+
|
135
|
+
client.track_self_describing_event event_json, contexts
|
136
|
+
end
|
137
|
+
|
138
|
+
##
|
139
|
+
# Get the plugin ID
|
140
|
+
#
|
141
|
+
# @return [String] plugin id
|
142
|
+
#
|
143
|
+
def id
|
144
|
+
'snowplow'
|
145
|
+
end
|
146
|
+
|
147
|
+
private
|
148
|
+
|
149
|
+
def enabled?
|
150
|
+
!@disabled
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class Itly
|
2
|
+
class Plugin
|
3
|
+
class Snowplow
|
4
|
+
class CallOptions < Itly::PluginCallOptions
|
5
|
+
end
|
6
|
+
|
7
|
+
class PageOptions < CallOptions
|
8
|
+
attr_reader contexts: Array[Itly::Plugin::Snowplow::Context]?
|
9
|
+
attr_reader callback: (^(Integer?, String?) -> void)?
|
10
|
+
|
11
|
+
def to_s: () -> String
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def initialize: (?contexts: Array[Itly::Plugin::Snowplow::Context]? contexts, ?callback: (^(Integer?, String?) -> void)? callback) -> void
|
16
|
+
end
|
17
|
+
|
18
|
+
class TrackOptions < CallOptions
|
19
|
+
attr_reader contexts: Array[Itly::Plugin::Snowplow::Context]?
|
20
|
+
attr_reader callback: (^(Integer?, String?) -> void)?
|
21
|
+
|
22
|
+
def to_s: () -> String
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def initialize: (?contexts: Array[Itly::Plugin::Snowplow::Context]? contexts, ?callback: (^(Integer?, String?) -> void)? callback) -> void
|
27
|
+
end
|
28
|
+
|
29
|
+
class IdentifyOptions < CallOptions
|
30
|
+
end
|
31
|
+
|
32
|
+
class GroupOptions < CallOptions
|
33
|
+
end
|
34
|
+
|
35
|
+
class AliasOptions < CallOptions
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/sig/context.rbs
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
class Itly
|
2
|
+
class Plugin
|
3
|
+
class Snowplow
|
4
|
+
class Context
|
5
|
+
attr_reader schema: String
|
6
|
+
attr_reader data: Hash[String, untyped]
|
7
|
+
|
8
|
+
def to_self_describing_json: () -> SnowplowTracker::SelfDescribingJson
|
9
|
+
def to_s: () -> String
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def initialize: (schema: String schema, data: Hash[String, untyped] data) -> void
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/sig/options.rbs
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
class Itly
|
2
|
+
class Plugin
|
3
|
+
class Snowplow
|
4
|
+
class Options
|
5
|
+
attr_reader endpoint: String
|
6
|
+
attr_reader protocol: String
|
7
|
+
attr_reader method: String
|
8
|
+
attr_reader buffer_size: Integer?
|
9
|
+
attr_reader disabled: bool
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def initialize: (endpoint: String endpoint, ?protocol: String protocol, ?method: String method, ?buffer_size: Integer buffer_size, ?disabled: bool disabled) -> void
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/sig/snowplow.rbs
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
class Itly
|
2
|
+
class Plugin
|
3
|
+
class Snowplow < Plugin
|
4
|
+
VERSION: String
|
5
|
+
|
6
|
+
attr_reader logger: Logger?
|
7
|
+
attr_reader vendor: String
|
8
|
+
attr_reader disabled: bool
|
9
|
+
attr_reader client: SnowplowTracker::Tracker
|
10
|
+
|
11
|
+
def load: (options: Itly::PluginOptions options) -> void
|
12
|
+
def identify: (user_id: String user_id, ?properties: propertiesHash? properties, ?options: Itly::Plugin::Snowplow::IdentifyOptions? options) -> void
|
13
|
+
def page: (user_id: String user_id, ?category: String? category, ?name: String? name, ?properties: propertiesHash? properties, ?options: Itly::Plugin::Segment::PageOptions? options) -> void
|
14
|
+
def track: (user_id: String user_id, event: Itly::Event event, ?options: Itly::Plugin::Snowplow::TrackOptions? options) -> void
|
15
|
+
def id: () -> String
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def initialize: (vendor: String vendor, options: Itly::Plugin::Snowplow::Options options) -> void
|
20
|
+
def enabled?: () -> bool
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: itly-plugin-snowplow
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Iteratively
|
8
|
+
- Benjamin Bouchet
|
9
|
+
- Justin Fiedler
|
10
|
+
- Andrey Sokolov
|
11
|
+
autorequire:
|
12
|
+
bindir: bin
|
13
|
+
cert_chain: []
|
14
|
+
date: 2021-06-15 00:00:00.000000000 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: itly-sdk
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0.1'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.1'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: snowplow-tracker
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - "~>"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0.6'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.6'
|
44
|
+
description: Track and validate analytics with a unified, extensible interface that
|
45
|
+
works with all your 3rd party analytics providers.
|
46
|
+
email:
|
47
|
+
- support@iterative.ly
|
48
|
+
executables: []
|
49
|
+
extensions: []
|
50
|
+
extra_rdoc_files: []
|
51
|
+
files:
|
52
|
+
- ".rspec"
|
53
|
+
- Gemfile
|
54
|
+
- Steepfile
|
55
|
+
- bin/console
|
56
|
+
- bin/rspec
|
57
|
+
- bin/setup
|
58
|
+
- itly-plugin-snowplow.gemspec
|
59
|
+
- lib/itly/plugin-snowplow.rb
|
60
|
+
- lib/itly/plugin/snowplow/call_options.rb
|
61
|
+
- lib/itly/plugin/snowplow/context.rb
|
62
|
+
- lib/itly/plugin/snowplow/options.rb
|
63
|
+
- lib/itly/plugin/snowplow/snowplow.rb
|
64
|
+
- lib/itly/plugin/snowplow/version.rb
|
65
|
+
- sig/call_options.rbs
|
66
|
+
- sig/context.rbs
|
67
|
+
- sig/lib/snowplow_tracker.rbs
|
68
|
+
- sig/options.rbs
|
69
|
+
- sig/snowplow.rbs
|
70
|
+
homepage: https://github.com/iterativelyhq/itly-sdk-ruby
|
71
|
+
licenses:
|
72
|
+
- MIT
|
73
|
+
metadata:
|
74
|
+
allowed_push_host: https://rubygems.org/
|
75
|
+
homepage_uri: https://github.com/iterativelyhq/itly-sdk-ruby
|
76
|
+
source_code_uri: https://github.com/iterativelyhq/itly-sdk-ruby/plugin-snowplow
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 2.6.0
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubygems_version: 3.0.3.1
|
93
|
+
signing_key:
|
94
|
+
specification_version: 4
|
95
|
+
summary: Snowplow plugin for Iteratively SDK for Ruby
|
96
|
+
test_files: []
|