rack-ga-track 0.2.0 → 0.3.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 +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +40 -3
- data/README.md +10 -8
- data/VERSION +1 -1
- data/lib/rack-ga-track.rb +8 -13
- data/rack-ga-track.gemspec +6 -6
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96ea26a2ffcda7b08aaaee34af1ea8c7e53b592a
|
4
|
+
data.tar.gz: 7264ed4ca578d4bda270c3adcb36c34699f33c7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89141a73848288473d97d2dbe3ab1290f44532fc5657ba74e892206fbc0ee053f3741f21fda3dc97b1852e974a51145c4bb042cba9da7b79c07e3d73e18b77f9
|
7
|
+
data.tar.gz: c2b9a32cad0360b9afc5a16485f3af1523dc639cb62aa2a0df1177da2a1b33fe24137108ee08b02b442aa2e8fd45d42ef5747f0f88e2de05ac4fffb4119d9e99
|
data/Gemfile
CHANGED
@@ -3,7 +3,7 @@ gem "rack", "~> 1.5", ">= 1.5.2"
|
|
3
3
|
|
4
4
|
group :development do
|
5
5
|
gem "bundler", "~> 1.6", ">= 1.6.2"
|
6
|
-
gem "jeweler", "~>
|
6
|
+
gem "jeweler", "~> 2.0", ">= 2.0.1"
|
7
7
|
gem 'simplecov', '~> 0.8', ">= 0.8.2"
|
8
8
|
gem "rack-test", "~> 0.6", ">= 0.6.2"
|
9
9
|
gem "minitest", "~> 5.4", ">= 5.4.0"
|
data/Gemfile.lock
CHANGED
@@ -1,23 +1,60 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
addressable (2.3.6)
|
5
|
+
builder (3.2.2)
|
6
|
+
descendants_tracker (0.0.4)
|
7
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
4
8
|
docile (1.1.5)
|
9
|
+
faraday (0.9.0)
|
10
|
+
multipart-post (>= 1.2, < 3)
|
5
11
|
git (1.2.7)
|
6
|
-
|
7
|
-
|
12
|
+
github_api (0.11.3)
|
13
|
+
addressable (~> 2.3)
|
14
|
+
descendants_tracker (~> 0.0.1)
|
15
|
+
faraday (~> 0.8, < 0.10)
|
16
|
+
hashie (>= 1.2)
|
17
|
+
multi_json (>= 1.7.5, < 2.0)
|
18
|
+
nokogiri (~> 1.6.0)
|
19
|
+
oauth2
|
20
|
+
hashie (3.2.0)
|
21
|
+
highline (1.6.21)
|
22
|
+
jeweler (2.0.1)
|
23
|
+
builder
|
24
|
+
bundler (>= 1.0)
|
8
25
|
git (>= 1.2.5)
|
26
|
+
github_api
|
27
|
+
highline (>= 1.6.15)
|
28
|
+
nokogiri (>= 1.5.10)
|
9
29
|
rake
|
30
|
+
rdoc
|
31
|
+
json (1.8.1)
|
32
|
+
jwt (1.0.0)
|
33
|
+
mini_portile (0.6.0)
|
10
34
|
minitest (5.4.0)
|
11
35
|
multi_json (1.10.1)
|
36
|
+
multi_xml (0.5.5)
|
37
|
+
multipart-post (2.0.0)
|
38
|
+
nokogiri (1.6.3)
|
39
|
+
mini_portile (= 0.6.0)
|
40
|
+
oauth2 (1.0.0)
|
41
|
+
faraday (>= 0.8, < 0.10)
|
42
|
+
jwt (~> 1.0)
|
43
|
+
multi_json (~> 1.3)
|
44
|
+
multi_xml (~> 0.5)
|
45
|
+
rack (~> 1.2)
|
12
46
|
rack (1.5.2)
|
13
47
|
rack-test (0.6.2)
|
14
48
|
rack (>= 1.0)
|
15
49
|
rake (10.3.2)
|
50
|
+
rdoc (4.1.1)
|
51
|
+
json (~> 1.4)
|
16
52
|
simplecov (0.8.2)
|
17
53
|
docile (~> 1.1.0)
|
18
54
|
multi_json
|
19
55
|
simplecov-html (~> 0.8.0)
|
20
56
|
simplecov-html (0.8.0)
|
57
|
+
thread_safe (0.3.4)
|
21
58
|
timecop (0.7.1)
|
22
59
|
|
23
60
|
PLATFORMS
|
@@ -25,7 +62,7 @@ PLATFORMS
|
|
25
62
|
|
26
63
|
DEPENDENCIES
|
27
64
|
bundler (~> 1.6, >= 1.6.2)
|
28
|
-
jeweler (~>
|
65
|
+
jeweler (~> 2.0, >= 2.0.1)
|
29
66
|
minitest (~> 5.4, >= 5.4.0)
|
30
67
|
rack (~> 1.5, >= 1.5.2)
|
31
68
|
rack-test (~> 0.6, >= 0.6.2)
|
data/README.md
CHANGED
@@ -4,7 +4,8 @@ Rack::GaTrack
|
|
4
4
|
Rack::GaTrack is a rack middleware that extracts Google Analytics Campaign
|
5
5
|
params from the request. Specifically, it looks for a param utm\_source in the request.
|
6
6
|
If found, it creates a cookie with utm\_source, utm\_content, utm\_term,
|
7
|
-
utm\_campaign, and time.
|
7
|
+
utm\_campaign, and time. Anytime utm_source is found in the request the cookie
|
8
|
+
will be updated with the new Google Analytics Campaign params.
|
8
9
|
|
9
10
|
Use Case
|
10
11
|
---------------
|
@@ -33,11 +34,12 @@ Add the Rack::GaTrack to your application stack:
|
|
33
34
|
end
|
34
35
|
|
35
36
|
You can now access your Google Analytics Campaign params in
|
36
|
-
<code>
|
37
|
-
<code>
|
38
|
-
<code>
|
39
|
-
<code>
|
40
|
-
<code>
|
37
|
+
<code>env['ga\_track.source']</code>
|
38
|
+
<code>env['ga\_track.term']</code>
|
39
|
+
<code>env['ga\_track.content']</code>
|
40
|
+
<code>env['ga\_track.campaign']</code>
|
41
|
+
<code>env['ga\_track.medium']</code>
|
42
|
+
<code>env['ga\_track.time']</code>
|
41
43
|
|
42
44
|
Customization
|
43
45
|
-------------
|
@@ -46,14 +48,14 @@ By default cookie is set for 30 days, you can extend time to live with <code>:tt
|
|
46
48
|
|
47
49
|
#Rails 4 in config/application.rb
|
48
50
|
class Application < Rails::Application
|
49
|
-
config.middleware.use Rack::
|
51
|
+
config.middleware.use Rack::GaTrack, :ttl => 3.months
|
50
52
|
end
|
51
53
|
|
52
54
|
The <code>:domain</code> option allows to customize cookie domain.
|
53
55
|
|
54
56
|
#Rails 4 in config/application.rb
|
55
57
|
class Application < Rails::Application
|
56
|
-
config.middleware.use Rack::
|
58
|
+
config.middleware.use Rack::GaTrack, :domain => '.example.org'
|
57
59
|
end
|
58
60
|
|
59
61
|
Rack::GaTrack will set cookie on <code>.example.org</code> so it's accessible on <code>www.example.org</code>, <code>app.example.org</code> etc.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/rack-ga-track.rb
CHANGED
@@ -17,7 +17,7 @@ module Rack
|
|
17
17
|
|
18
18
|
response = @app.call(env)
|
19
19
|
if params && req.params['utm_source']
|
20
|
-
|
20
|
+
create_cookie(response[1], params)
|
21
21
|
end
|
22
22
|
response
|
23
23
|
end
|
@@ -27,33 +27,28 @@ module Rack
|
|
27
27
|
def set_params(req)
|
28
28
|
if req.params['utm_source']
|
29
29
|
return params_hash(req.params)
|
30
|
-
elsif req.cookies['
|
31
|
-
return
|
30
|
+
elsif req.cookies['ga_track']
|
31
|
+
return JSON.parse(req.cookies['ga_track'])
|
32
32
|
end
|
33
33
|
false
|
34
34
|
end
|
35
35
|
|
36
36
|
def params_hash(params)
|
37
|
-
params['utm_time'] ||= Time.now
|
38
|
-
|
39
37
|
{
|
40
38
|
source: params['utm_source'],
|
41
39
|
medium: params['utm_medium'],
|
42
40
|
term: params['utm_term'],
|
43
41
|
content: params['utm_content'],
|
44
42
|
campaign: params['utm_campaign'],
|
45
|
-
time:
|
43
|
+
time: Time.now.to_i
|
46
44
|
}
|
47
45
|
end
|
48
46
|
|
49
|
-
def
|
47
|
+
def create_cookie(headers, params)
|
50
48
|
expires = Time.now + @cookie_ttl
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
cookie_key = 'utm_' + key.to_s
|
55
|
-
Rack::Utils.set_cookie_header!(headers, cookie_key, cookie_hash)
|
56
|
-
end
|
49
|
+
cookie_hash = { value: JSON.generate(params), expires: expires, path: '/' }
|
50
|
+
cookie_hash[:domain] = @cookie_domain if @cookie_domain
|
51
|
+
Rack::Utils.set_cookie_header!(headers, 'ga_track', cookie_hash)
|
57
52
|
end
|
58
53
|
|
59
54
|
def create_env_vars(env, params)
|
data/rack-ga-track.gemspec
CHANGED
@@ -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: rack-ga-track 0.
|
5
|
+
# stub: rack-ga-track 0.3.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "rack-ga-track"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.3.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 = ["Daniel Nolan"]
|
14
|
-
s.date = "2014-07-
|
14
|
+
s.date = "2014-07-21"
|
15
15
|
s.description = "If the user visits via a Google Analytics Campaign link,\n this middleware will track utm_source, utm_content, utm_term, utm_medium, utm_campaign, and time."
|
16
16
|
s.email = "dnolan@t1dexchange.org"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
|
|
41
41
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
42
42
|
s.add_runtime_dependency(%q<rack>, [">= 1.5.2", "~> 1.5"])
|
43
43
|
s.add_development_dependency(%q<bundler>, [">= 1.6.2", "~> 1.6"])
|
44
|
-
s.add_development_dependency(%q<jeweler>, [">=
|
44
|
+
s.add_development_dependency(%q<jeweler>, [">= 2.0.1", "~> 2.0"])
|
45
45
|
s.add_development_dependency(%q<simplecov>, [">= 0.8.2", "~> 0.8"])
|
46
46
|
s.add_development_dependency(%q<rack-test>, [">= 0.6.2", "~> 0.6"])
|
47
47
|
s.add_development_dependency(%q<minitest>, [">= 5.4.0", "~> 5.4"])
|
@@ -49,7 +49,7 @@ Gem::Specification.new do |s|
|
|
49
49
|
else
|
50
50
|
s.add_dependency(%q<rack>, [">= 1.5.2", "~> 1.5"])
|
51
51
|
s.add_dependency(%q<bundler>, [">= 1.6.2", "~> 1.6"])
|
52
|
-
s.add_dependency(%q<jeweler>, [">=
|
52
|
+
s.add_dependency(%q<jeweler>, [">= 2.0.1", "~> 2.0"])
|
53
53
|
s.add_dependency(%q<simplecov>, [">= 0.8.2", "~> 0.8"])
|
54
54
|
s.add_dependency(%q<rack-test>, [">= 0.6.2", "~> 0.6"])
|
55
55
|
s.add_dependency(%q<minitest>, [">= 5.4.0", "~> 5.4"])
|
@@ -58,7 +58,7 @@ Gem::Specification.new do |s|
|
|
58
58
|
else
|
59
59
|
s.add_dependency(%q<rack>, [">= 1.5.2", "~> 1.5"])
|
60
60
|
s.add_dependency(%q<bundler>, [">= 1.6.2", "~> 1.6"])
|
61
|
-
s.add_dependency(%q<jeweler>, [">=
|
61
|
+
s.add_dependency(%q<jeweler>, [">= 2.0.1", "~> 2.0"])
|
62
62
|
s.add_dependency(%q<simplecov>, [">= 0.8.2", "~> 0.8"])
|
63
63
|
s.add_dependency(%q<rack-test>, [">= 0.6.2", "~> 0.6"])
|
64
64
|
s.add_dependency(%q<minitest>, [">= 5.4.0", "~> 5.4"])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-ga-track
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Nolan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -56,20 +56,20 @@ dependencies:
|
|
56
56
|
requirements:
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
59
|
+
version: 2.0.1
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
62
|
+
version: '2.0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 2.0.1
|
70
70
|
- - "~>"
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
72
|
+
version: '2.0'
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
74
|
name: simplecov
|
75
75
|
requirement: !ruby/object:Gem::Requirement
|