rack-track 0.1.3 → 0.1.4
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.
- data/Rakefile +1 -1
- data/lib/rack/track.rb +15 -5
- data/rack-track.gemspec +2 -2
- data/test/test_rack-track.rb +26 -1
- metadata +4 -4
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ require 'jeweler'
|
|
15
15
|
Jeweler::Tasks.new do |gem|
|
16
16
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
17
|
gem.name = "rack-track"
|
18
|
-
gem.version = "0.1.
|
18
|
+
gem.version = "0.1.4"
|
19
19
|
gem.homepage = "http://github.com/michaelbaldry/rack-track"
|
20
20
|
gem.license = "MIT"
|
21
21
|
gem.summary = %Q{Taking all the pain away from managing Tracking Pixels}
|
data/lib/rack/track.rb
CHANGED
@@ -13,9 +13,8 @@ module Rack
|
|
13
13
|
response_body = ""
|
14
14
|
response.each { |p| response_body += p }
|
15
15
|
response = [@rules.apply(request, response_body)] if response_body.include? "</body>"
|
16
|
-
headers["Content-Length"] = response
|
16
|
+
headers["Content-Length"] = get_length(response)
|
17
17
|
end
|
18
|
-
p headers
|
19
18
|
[status, headers, response]
|
20
19
|
end
|
21
20
|
|
@@ -24,8 +23,14 @@ module Rack
|
|
24
23
|
|
25
24
|
private
|
26
25
|
|
26
|
+
def get_length(response)
|
27
|
+
sum_length = 0
|
28
|
+
response.each {|x| sum_length += x.length }
|
29
|
+
sum_length.to_s
|
30
|
+
end
|
31
|
+
|
27
32
|
class PixelSet
|
28
|
-
Pixel = Struct.new(:name, :area, :content)
|
33
|
+
Pixel = Struct.new(:name, :area, :except, :content)
|
29
34
|
|
30
35
|
def initialize(&block)
|
31
36
|
@pixels = []
|
@@ -39,14 +44,19 @@ module Rack
|
|
39
44
|
end
|
40
45
|
|
41
46
|
def pixel(name, opts = {}, &block)
|
42
|
-
@pixels << Pixel.new(name, opts[:on], block[])
|
47
|
+
@pixels << Pixel.new(name, opts[:on], opts[:except] ? [opts[:except]].flatten : [], block[])
|
43
48
|
end
|
44
49
|
|
45
50
|
def apply(request, response)
|
46
51
|
url = URI::parse(request.url)
|
52
|
+
p "applying to #{url.path.downcase}"
|
53
|
+
matching_areas = @areas.find_all { |k, a| a.include? url.path.downcase }.collect { |k, v| k }
|
54
|
+
p matching_areas
|
47
55
|
@pixels.each do |p|
|
48
56
|
paths = @areas[p.area]
|
49
|
-
response.insert(response.rindex("</body>"), p.content) if [:all_pages, :all].include?(p.area) ||
|
57
|
+
response.insert(response.rindex("</body>"), p.content) if ([:all_pages, :all].include?(p.area) ||
|
58
|
+
paths.include?(url.path.downcase)) &&
|
59
|
+
p.except.find_all { |ea| matching_areas.include? ea }.empty?
|
50
60
|
end
|
51
61
|
response
|
52
62
|
end
|
data/rack-track.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rack-track}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Baldry"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-09-01}
|
13
13
|
s.description = %q{A rack middleware that allows you to define and document tracking pixels in one location}
|
14
14
|
s.email = %q{clockwize@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/test/test_rack-track.rb
CHANGED
@@ -35,7 +35,7 @@ class TestRackTrack < Test::Unit::TestCase
|
|
35
35
|
end
|
36
36
|
|
37
37
|
assert tp.instance_variable_get(:@areas) == {:confirmation => ["business-energy/confirmation", "business-communications/confirmation"]}
|
38
|
-
assert tp.instance_variable_get(:@pixels) == [Rack::Track::PixelSet::Pixel.new("Confirmation (GA)", :confirmation, "THIS IS A GA CONFIRMATION TEST")]
|
38
|
+
assert tp.instance_variable_get(:@pixels) == [Rack::Track::PixelSet::Pixel.new("Confirmation (GA)", :confirmation, [], "THIS IS A GA CONFIRMATION TEST")]
|
39
39
|
end
|
40
40
|
|
41
41
|
def test_psudo_area_all
|
@@ -46,6 +46,31 @@ class TestRackTrack < Test::Unit::TestCase
|
|
46
46
|
assert last_response.body.include? "THIS-IS-A-TEST</body>"
|
47
47
|
end
|
48
48
|
|
49
|
+
def test_area_exclusion
|
50
|
+
@rules = Proc.new do
|
51
|
+
area :an_area, "/blah", "/blah/test"
|
52
|
+
|
53
|
+
pixel "Test pixel", :on => :an_area do
|
54
|
+
"THIS-IS-A-TEST"
|
55
|
+
end
|
56
|
+
|
57
|
+
pixel "All except an_area", :on => :all, :except => :an_area do
|
58
|
+
"ALL-EXCEPT-AN-AREA"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
get '/'
|
62
|
+
assert !last_response.body.include?("THIS-IS-A-TEST")
|
63
|
+
assert last_response.body.include?("ALL-EXCEPT-AN-AREA")
|
64
|
+
|
65
|
+
get '/blah'
|
66
|
+
assert last_response.body.include?("THIS-IS-A-TEST")
|
67
|
+
assert !last_response.body.include?("ALL-EXCEPT-AN-AREA")
|
68
|
+
|
69
|
+
get '/blah/test'
|
70
|
+
assert last_response.body.include?("THIS-IS-A-TEST")
|
71
|
+
assert !last_response.body.include?("ALL-EXCEPT-AN-AREA")
|
72
|
+
end
|
73
|
+
|
49
74
|
def test_area_inclusion
|
50
75
|
@rules = Proc.new do
|
51
76
|
area :an_area, "/blah", "/blah/test"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-track
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Baldry
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-09-01 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|