heap 0.1.3 → 0.2.0

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
  SHA1:
3
- metadata.gz: 29e1017542b6783bbcb5bea44b19cba64c422c34
4
- data.tar.gz: d082a1e537a141cc57d26cf3d604c95b08ae80ff
3
+ metadata.gz: d744f1219db0c3007df69dd94f39c0b1850638bc
4
+ data.tar.gz: 51dbfcc6932734701355ce03ae8e75dbbaa171d6
5
5
  SHA512:
6
- metadata.gz: 13f9fbb1e5a7c4872f80e89062cbe448efe36c35e7ee463bece34b49b891d9a37990c9bf8c27563d0fc9ebe1757d284b10dac63e8525df08e34415c54b5994a6
7
- data.tar.gz: 8c22f073fba35448e2fccf535ea75dd76348550ab3c1308b52f62402a78fa1100f316c2f2d898751dad895d7c8f9f1ec6ef93c31b9ac3e5b97e24b0da3a832c6
6
+ metadata.gz: 3fee957cce4f2c73d599457071c86a0a1bdc7d71f60cab29768c7390910d9222e51eb4c102284f8e685eee548fa84eb367f5d72f3744fd831302d4eeddf8530f
7
+ data.tar.gz: a5eb712028103a1143b477d97115e9fb66c759dd2eed4f5fb0cbff5c6fa8f694b78560519e05168eaca5bbab592f1a1e97b7b1763b59cc8ca9ae9702a1254dfd
@@ -0,0 +1,18 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+ This project adheres to [Semantic Versioning](http://semver.org/).
4
+
5
+ <!-- ## [Unreleased][unreleased] -->
6
+
7
+ ## [0.1.3] - 2015-02-05
8
+ ### Changed
9
+ - Updated to new JS snippet from heap
10
+
11
+ ## [0.1.2] - 2014-12-21
12
+ ### Added
13
+ - Heap now gives you the option to use another user handle instead of e-mail
14
+
15
+ [unreleased]: https://github.com/hectormalot/heap/compare/v0.1.3...HEAD
16
+ [0.1.3]: https://github.com/hectormalot/heap/compare/v0.1.3...v0.1.2
17
+ [0.1.2]: https://github.com/hectormalot/heap/compare/v0.1.2...v0.1.1
18
+ [0.1.1]: https://github.com/hectormalot/heap/compare/v0.1.1...v0.1.0
@@ -30,7 +30,7 @@ Heap needs your application ID to successfully submit data to heapanalytics.com.
30
30
 
31
31
  ### Identifying your users
32
32
 
33
- The `heap_identify` view helper can be used to supply heap with attributes for your users. The helper takes 2 arguments:
33
+ The `heap_identify` view helper can be used to supply heap with attributes for your users. The helper takes 2 arguments:
34
34
 
35
35
  * [String] email: The e-mail address used to identify your visitor in Heap
36
36
  * [Hash, optional] properties: A hash containing additional properties for your users (Hashes with multiple levels are currently not supported)
@@ -43,6 +43,12 @@ If you wish to use a different handle type, only `handle`/`email` are supported
43
43
 
44
44
  Default is set to `email`.
45
45
 
46
+ ### Adding custom event properties
47
+
48
+ With `heap_set_event_properties`, you can specify key-value pairs to associate with all of a user's subsequent events. This helper takes one argument:
49
+
50
+ * [Hash] properties: A hash containing all of the properties you want to attach to the user's events
51
+
46
52
  ### Tracking server-side events
47
53
 
48
54
  In case you want to track server-side events -- for example when sending a welcome e-mail to a new user --, you can do so using `Heap.event`. `Heap.event` takes 3 arguments:
@@ -55,7 +61,7 @@ Example:
55
61
 
56
62
  Heap.event("Welcome e-mail sent", "user@example.com", promotion:'second gem free', segment:'ruby developers')
57
63
 
58
- ### Adding server-side user attributes
64
+ ### Adding server-side user attributes
59
65
 
60
66
  To update or set properties on your users directly from your application, use `Heap.identify`. `Heap.identify` takes 2 arguments:
61
67
 
@@ -67,7 +73,7 @@ Example:
67
73
  Heap.identify("user@example.com", segment:'ruby developers', age: 25)
68
74
 
69
75
  ## Contributing to Heap
70
-
76
+
71
77
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
72
78
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
73
79
  * Fork the project.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.2.0
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: heap 0.1.3 ruby lib
5
+ # stub: heap 0.2.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "heap"
9
- s.version = "0.1.3"
9
+ s.version = "0.2.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Dennis de Reus"]
14
- s.date = "2015-02-05"
14
+ s.date = "2015-04-04"
15
15
  s.description = "Easy integration of heapanalytics into your ruby app"
16
16
  s.email = "dennisdereus@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
+ "CHANGELOG.mdown",
23
24
  "Gemfile",
24
25
  "Gemfile.lock",
25
26
  "LICENSE.txt",
@@ -1,18 +1,26 @@
1
+ require 'json'
2
+
1
3
  class Heap
2
4
  module ViewHelpers
3
5
  def heap_analytics
4
- javascript_tag :type => "text/javascript" do
5
- raw %Q{
6
- window.heap=window.heap||[],heap.load=function(t,e){window.heap.appid=t,window.heap.config=e;var a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.heapanalytics.com/js/heap-"+t+".js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n);for(var o=function(t){return function(){heap.push([t].concat(Array.prototype.slice.call(arguments,0)))}},p=["clearEventProperties","identify","setEventProperties","track","unsetEventProperty"],c=0;c<p.length;c++)heap[p[c]]=o(p[c])};
7
- heap.load("#{Heap.app_id}");
8
- }.html_safe
9
- end
6
+ heap_js_block %Q{
7
+ window.heap=window.heap||[],heap.load=function(t,e){window.heap.appid=t,window.heap.config=e;var a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.heapanalytics.com/js/heap-"+t+".js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n);for(var o=function(t){return function(){heap.push([t].concat(Array.prototype.slice.call(arguments,0)))}},p=["clearEventProperties","identify","setEventProperties","track","unsetEventProperty"],c=0;c<p.length;c++)heap[p[c]]=o(p[c])};
8
+ heap.load("#{Heap.app_id}");
9
+ }
10
10
  end
11
11
 
12
12
  def heap_identify(handle, properties = nil)
13
13
  body = properties.map {|k,v| ", #{k}: \"#{v}\""}.join if properties.is_a? Hash
14
- javascript_tag do
15
- raw %Q{heap.identify({#{Heap.default_handle_type}: "#{handle}" #{body}});}.html_safe
14
+ heap_js_block %Q{heap.identify({#{Heap.default_handle_type}: "#{handle}" #{body}});}
15
+ end
16
+
17
+ def heap_set_event_properties(properties = {})
18
+ heap_js_block %Q{heap.setEventProperties(#{properties.to_json});}
19
+ end
20
+
21
+ def heap_js_block(content)
22
+ javascript_tag :type => "text/javascript" do
23
+ raw content.html_safe
16
24
  end
17
25
  end
18
26
  end
@@ -1,10 +1,34 @@
1
1
  require 'helper'
2
2
 
3
+ class String
4
+ def html_safe
5
+ self
6
+ end
7
+ end
8
+
3
9
  class HeapHelperTest < MiniTest::Test
4
10
  include Heap::ViewHelpers
5
11
 
6
- should "produce correct identify handle type" #do
7
- # handle = '123'
8
- # assert_equal heap_identify(handle), "heap.identify({email: \"#{handle}\" });"
9
- # end
12
+ def javascript_tag(options = {})
13
+ yield
14
+ end
15
+
16
+ def raw(js)
17
+ js
18
+ end
19
+
20
+ should "produce correct identify handle type" do
21
+ handle = '123'
22
+ assert_equal heap_identify(handle), "heap.identify({email: \"#{handle}\" });"
23
+ end
24
+
25
+ should "set event properties from arbitrary key-value pairs" do
26
+ js = heap_set_event_properties({
27
+ :first => "first value",
28
+ "second" => 2,
29
+ :third => true
30
+ })
31
+
32
+ assert_equal js, %Q/heap.setEventProperties({"first":"first value","second":2,"third":true});/
33
+ end
10
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis de Reus
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-05 00:00:00.000000000 Z
11
+ date: 2015-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -117,6 +117,7 @@ extra_rdoc_files:
117
117
  - README.mdown
118
118
  files:
119
119
  - ".document"
120
+ - CHANGELOG.mdown
120
121
  - Gemfile
121
122
  - Gemfile.lock
122
123
  - LICENSE.txt