pushpop-keen 0.1.1 → 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2f99b446d23b1ca7d137d3975b44f0416d6c7181
4
+ data.tar.gz: 3db767ef6814b271c2d7ea6641cffe1457e170d4
5
+ SHA512:
6
+ metadata.gz: c97d92e2f35d54f07fb0035b52afaf0e6a16597544ed1444cd505de453b6a03b44f29ac23bc52ffe3c8b005fabefcad9aaf10953faf6be193860031687c48089
7
+ data.tar.gz: d884e5c7a1d2f963bcf80287c390227056f9cd0971cb0f1aa28d4761b123e4ee9e542115dc203b577b4dd0ffda85827b261479d833d0f059b2b690ad29047475
data/README.md CHANGED
@@ -18,6 +18,8 @@ $ gem install pushpop-keen
18
18
 
19
19
  ### Usage
20
20
 
21
+ #### Querying
22
+
21
23
  The `keen` plugin gives you a DSL to specify Keen query parameters. Those query parameters are used to query data using the [keen-gem](https://github.com/keenlabs/keen-gem).
22
24
 
23
25
  Here's an example that shows many of the options you can specify:
@@ -43,6 +45,20 @@ end
43
45
  A `steps` method is also supported for [funnels](https://keen.io/docs/data-analysis/funnels/),
44
46
  as well as `analyses` for doing a [multi-analysis](https://keen.io/docs/data-analysis/multi-analysis/).
45
47
 
48
+ #### Tracking
49
+
50
+ You can also very simply record events to Keen:
51
+
52
+ ``` ruby
53
+ job 'send pageview'
54
+
55
+ keen do
56
+ record 'Pageview', path: '/a/path'
57
+ end
58
+
59
+ end
60
+ ```
61
+
46
62
  The `keen` plugin requires that the following environment variables are set:
47
63
 
48
64
  + `KEEN_PROJECT_ID`
data/lib/pushpop-keen.rb CHANGED
@@ -20,14 +20,25 @@ module Pushpop
20
20
  attr_accessor :_analyses
21
21
 
22
22
  def run(last_response=nil, step_responses=nil)
23
- self.configure(last_response, step_responses)
24
- ::Keen.send(self._analysis_type, self._event_collection, self.to_analysis_options)
23
+ ret = self.configure(last_response, step_responses)
24
+
25
+ if self._analysis_type == 'funnel'
26
+ ::Keen.funnel(self.to_analysis_options)
27
+ elsif !self._analysis_type.nil?
28
+ ::Keen.send(self._analysis_type, self._event_collection, self.to_analysis_options)
29
+ else
30
+ ret
31
+ end
25
32
  end
26
33
 
27
34
  def configure(last_response=nil, step_responses=nil)
28
35
  self.instance_exec(last_response, step_responses, &block)
29
36
  end
30
37
 
38
+ def record(name, properties)
39
+ ::Keen.publish(name, properties)
40
+ end
41
+
31
42
  def to_analysis_options
32
43
  { timeframe: self._timeframe,
33
44
  target_property: self._target_property,
@@ -1,5 +1,5 @@
1
1
  module Pushpop
2
2
  class Keen
3
- VERSION = '0.1.1'
3
+ VERSION = '0.2'
4
4
  end
5
5
  end
@@ -37,6 +37,17 @@ describe Pushpop::Keen do
37
37
 
38
38
  end
39
39
 
40
+ describe '#record' do
41
+ it 'should record an event with properties' do
42
+ step = Pushpop::Keen.new do
43
+ record 'Pageview', useragent: 'Chrome'
44
+ end
45
+
46
+ expect(Keen).to receive(:publish).with('Pageview', useragent: 'Chrome')
47
+ step.run
48
+ end
49
+ end
50
+
40
51
  describe '#run' do
41
52
  it 'should run the query based on the analysis type' do
42
53
  Keen.stub(:count).with('pageviews', {
@@ -51,6 +62,40 @@ describe Pushpop::Keen do
51
62
  response = step.run
52
63
  response.should == 365
53
64
  end
65
+
66
+ it 'should not try to run a query if the analysis type isnt set' do
67
+ step = Pushpop::Keen.new do
68
+ group_by 'something'
69
+ end
70
+
71
+ expect(Keen).not_to receive(:send)
72
+ expect(Keen).not_to receive(:funnel)
73
+
74
+ step.run
75
+ end
76
+
77
+ it 'should run funnels directly, instead of using send' do
78
+ step = Pushpop::Keen.new('one') do
79
+ analysis_type 'funnel'
80
+ steps [
81
+ {
82
+ actor_property: 'uuid',
83
+ event_collection: 'pageviews',
84
+ timeframe: 'this_3_days'
85
+ },
86
+ {
87
+ actor_property: 'uuid',
88
+ event_collection: 'link_clicks',
89
+ timeframe: 'this_3_days'
90
+ }
91
+ ]
92
+ end
93
+
94
+ expect(Keen).to receive(:funnel)
95
+ expect(Keen).not_to receive(:send)
96
+
97
+ step.run
98
+ end
54
99
  end
55
100
 
56
101
  describe '#to_analysis_options' do
metadata CHANGED
@@ -1,46 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pushpop-keen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: '0.2'
6
5
  platform: ruby
7
6
  authors:
8
7
  - Josh Dzielak
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-06-16 00:00:00.000000000 Z
11
+ date: 2015-05-20 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: pushpop
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: keen
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  description:
@@ -62,27 +57,26 @@ files:
62
57
  - spec/spec_helper.rb
63
58
  homepage: https://github.com/pushpop-project/pushpop-keen
64
59
  licenses: []
60
+ metadata: {}
65
61
  post_install_message:
66
62
  rdoc_options: []
67
63
  require_paths:
68
64
  - lib
69
65
  required_ruby_version: !ruby/object:Gem::Requirement
70
- none: false
71
66
  requirements:
72
- - - ! '>='
67
+ - - '>='
73
68
  - !ruby/object:Gem::Version
74
69
  version: '0'
75
70
  required_rubygems_version: !ruby/object:Gem::Requirement
76
- none: false
77
71
  requirements:
78
- - - ! '>='
72
+ - - '>='
79
73
  - !ruby/object:Gem::Version
80
74
  version: '0'
81
75
  requirements: []
82
76
  rubyforge_project:
83
- rubygems_version: 1.8.23
77
+ rubygems_version: 2.0.14
84
78
  signing_key:
85
- specification_version: 3
79
+ specification_version: 4
86
80
  summary: Pushpop Keen IO plugin for querying and recording events
87
81
  test_files:
88
82
  - spec/pushpop-keen_spec.rb