pixelator 0.0.1
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 +15 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +122 -0
- data/Rakefile +41 -0
- data/app/assets/javascripts/core/generic_pixel.js +13 -0
- data/app/assets/javascripts/core/pixelator.js +31 -0
- data/app/assets/javascripts/pixelator_core.js +1 -0
- data/app/controllers/pixelator_controller.rb +10 -0
- data/app/views/pixelator/data.js.haml +3 -0
- data/app/views/shared/_pixelator.html.haml +20 -0
- data/app/views/shared/_pixelator_head.html.haml +7 -0
- data/config/routes.rb +3 -0
- data/lib/generators/pixelator/USAGE +8 -0
- data/lib/generators/pixelator/pixelator_generator.rb +16 -0
- data/lib/generators/pixelator/templates/pixelator.rb +11 -0
- data/lib/generators/pixelator/templates/pixels.yml +47 -0
- data/lib/pixelator.rb +37 -0
- data/lib/pixelator/engine.rb +9 -0
- data/lib/pixelator/version.rb +3 -0
- data/lib/tasks/jasmine.rake +8 -0
- data/lib/tasks/pixelator_tasks.rake +4 -0
- metadata +191 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MmJkYzUyYjIzMTgzN2RiM2YxNjI1OWM4Y2JmMjJlNTNjNzAwNWI2Nw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
Y2Q5ZmUxZGQxYjI2OTA1OTQ1ZDA5MDM2ODdkYWUzZTJiYWExOWZmOA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NzgxMTUzNDUwMWJlYjhiNDZlMTQ1Yzg5OWIxZTUzOTEyMjczMGE3YTM4N2Q3
|
10
|
+
ZjhkYTRhNGUwMWEwZWI0NWQzNDJhOGMzNjE3MDBkNGZjMmFmYTYzYzVjZGM2
|
11
|
+
NGVjMWE0YzM0NDUxYTg4YmNlMjZmMTAwMzEwM2QyYWQ1MGUwMDU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MTNhNmI1MzRhYjQ1Mzg2OGZmNDE2NzcwZjRiNWE5ZDMzNzJhZmQ3MDczZjg0
|
14
|
+
NGUyYTZmNmFjNWU2MTk0MmQzMzAyZDU0MTViODcyNjE0OTJkMzQ1NGVjZDRl
|
15
|
+
ZDFhYWRjYmU2MGNjODZhOTNkNmZiOTBiNzQxNGZkNWRmZmUwYzk=
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
Pixelator
|
2
|
+
=======
|
3
|
+
|
4
|
+
Pixelator is a Ruby on Rails plugin that allows you to easily and
|
5
|
+
asyncronously add tracking pixels (and other bits of html) to your code.
|
6
|
+
|
7
|
+
|
8
|
+
## Prerequisites
|
9
|
+
|
10
|
+
* requires jquery-rails
|
11
|
+
* requires underscore.js
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
### Install the gem
|
16
|
+
|
17
|
+
`gem 'pixelator', :git => git@github.com:howaboutwe/pixelator.git`
|
18
|
+
|
19
|
+
### Run the generator
|
20
|
+
|
21
|
+
`rails g pixelator`
|
22
|
+
|
23
|
+
The generator will create 2 files for you:
|
24
|
+
* config/initializers/pixelator.rb
|
25
|
+
* config/pixels.yml
|
26
|
+
It will also add pixelator_core to your application.js file:
|
27
|
+
|
28
|
+
`//= require 'pixelator_core'`
|
29
|
+
|
30
|
+
### Add to you code
|
31
|
+
|
32
|
+
#### config/pixels.yml
|
33
|
+
|
34
|
+
pixels.yml contains a hash with the top level keys being types of
|
35
|
+
pixels, such as 'all', 'landing','sign_up', etc.
|
36
|
+
|
37
|
+
You define the keys.
|
38
|
+
|
39
|
+
Each key, has an array of pixels, which specify:
|
40
|
+
|
41
|
+
* name - name of pixel for auditing purposes
|
42
|
+
* type - img, js, iframe
|
43
|
+
* snippet - snippet of html that will be run through an underscore template
|
44
|
+
|
45
|
+
For example, a google analytics snippet that is to be shown on all pages
|
46
|
+
and uses the google_analytics key in Pixelator.context to set the GA account number
|
47
|
+
would look like:
|
48
|
+
```
|
49
|
+
all:
|
50
|
+
- name: google_analytics
|
51
|
+
type: javascript
|
52
|
+
snippet: |
|
53
|
+
<script type="text/javascript">
|
54
|
+
try {
|
55
|
+
var _gaq = _gaq || [];
|
56
|
+
_gaq.push(['_setAccount', '<%= google_analytics %>']);
|
57
|
+
_gaq.push(['_trackPageview']);
|
58
|
+
|
59
|
+
(function() {
|
60
|
+
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
61
|
+
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
62
|
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
63
|
+
})();
|
64
|
+
} catch(err) {}
|
65
|
+
</script>
|
66
|
+
```
|
67
|
+
optionally, you can include a 'partner'
|
68
|
+
|
69
|
+
|
70
|
+
#### Layout/Views
|
71
|
+
In the head of your layout, add:
|
72
|
+
|
73
|
+
```
|
74
|
+
= javascript_include_tag "/pixelator/data"
|
75
|
+
= render partial: 'shared/pixelator_head'
|
76
|
+
```
|
77
|
+
|
78
|
+
In the bottom of your layout, add:
|
79
|
+
|
80
|
+
`= render partial: 'shared/pixelator', pixel_types: ['all']`
|
81
|
+
|
82
|
+
To add the Pixelator to different page, such as landing, do:
|
83
|
+
|
84
|
+
`= render partial: 'shared/pixelator', pixel_types: ['landing']`
|
85
|
+
If using the partial, you could also set the pixel types in the
|
86
|
+
controller with
|
87
|
+
`@pixel_types = ['stuff']`
|
88
|
+
*Note: this will **always** add 'all' to the array
|
89
|
+
or
|
90
|
+
```
|
91
|
+
var pixelator = new Pixelator(PIXEL_DATA, '#{@scope}');
|
92
|
+
_.each(#{@pixel_types}, function(p) {
|
93
|
+
pixelator.run(p);
|
94
|
+
});
|
95
|
+
```
|
96
|
+
|
97
|
+
## TODO
|
98
|
+
|
99
|
+
* Expand example of how to set pixel context in controller and use in pixels.yml with ERB syntax.
|
100
|
+
* Add documentation about head pixels
|
101
|
+
* JS Pixel data - should not include head and should be on Pixelator obj
|
102
|
+
* JS flag for turning on/off
|
103
|
+
* Turn off but still log each pixel that would be run
|
104
|
+
* run can take an array
|
105
|
+
|
106
|
+
* change partner to scope
|
107
|
+
* explain partner/scope
|
108
|
+
* Add Travis CI
|
109
|
+
* Add documentation about context
|
110
|
+
|
111
|
+
## Maintainers
|
112
|
+
|
113
|
+
Created by the HowAboutWe.com dev team.
|
114
|
+
|
115
|
+
* [How About We](http://www.howaboutwe.com)
|
116
|
+
|
117
|
+
* [Rebecca Miller-Webster](http://www.github.com/rmw), HowAboutWe.com
|
118
|
+
* [Marco Carag](http://www.github.com/jazzcrazed), HowAboutWe.com
|
119
|
+
* [Brendan Barr](http://www.github.com/bbarr), HowAboutWe.com
|
120
|
+
|
121
|
+
Copyright (c) 2008-2012 This Life, Inc. This software is licensed under
|
122
|
+
the MIT License
|
data/Rakefile
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'Pixelator'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.markdown')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
24
|
+
load 'rails/tasks/engine.rake'
|
25
|
+
|
26
|
+
Bundler::GemHelper.install_tasks
|
27
|
+
|
28
|
+
require 'rake/testtask'
|
29
|
+
|
30
|
+
Rake::TestTask.new(:test) do |t|
|
31
|
+
t.libs << 'lib'
|
32
|
+
t.libs << 'spec'
|
33
|
+
t.pattern = 'spec/**/*_spec.rb'
|
34
|
+
t.verbose = false
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
task :default => [:test, "jasmine:ci"]
|
39
|
+
|
40
|
+
|
41
|
+
load APP_RAKEFILE
|
@@ -0,0 +1,13 @@
|
|
1
|
+
function GenericPixel(options) {
|
2
|
+
options = options || {};
|
3
|
+
this.snippet = options.pixel['snippet'];
|
4
|
+
this.context = options.context;
|
5
|
+
this.comment = 'Generic Pixel(' + options.pixel['type'] + '): ' + options.pixel['name'];
|
6
|
+
this.template = _.template('<!-- ' + this.comment + ' -->' + decodeURIComponent(this.snippet));
|
7
|
+
this.tag = this.template(this.context);
|
8
|
+
}
|
9
|
+
|
10
|
+
GenericPixel.prototype.insert = function() {
|
11
|
+
$(this.tag).addClass('pixel').appendTo('body');
|
12
|
+
$('body').append('<!-- END ' + this.comment + ' -->');
|
13
|
+
};
|
@@ -0,0 +1,31 @@
|
|
1
|
+
var Pixelator = function(data, partner) {
|
2
|
+
this.data = data;
|
3
|
+
this.partner = partner;
|
4
|
+
};
|
5
|
+
|
6
|
+
Pixelator.prototype = {
|
7
|
+
defaults: function() {
|
8
|
+
var default_context = this.data.context || {};
|
9
|
+
default_context.timestamp = new Date().getTime();
|
10
|
+
return default_context;
|
11
|
+
},
|
12
|
+
picker: function(key, options) {
|
13
|
+
var self = this;
|
14
|
+
var keys = self.data.pixels[key];
|
15
|
+
|
16
|
+
if (!keys) { return; }
|
17
|
+
|
18
|
+
_.each(keys, function(pixel) {
|
19
|
+
if (pixel.partner && self.partner !== pixel.partner) {
|
20
|
+
return;
|
21
|
+
}
|
22
|
+
|
23
|
+
var gp = new GenericPixel({ context: options, pixel: pixel });
|
24
|
+
gp.insert();
|
25
|
+
});
|
26
|
+
},
|
27
|
+
run: function(key, options) {
|
28
|
+
options = _(options || {}).extend(this.defaults());
|
29
|
+
this.picker(key, options);
|
30
|
+
}
|
31
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require_tree ./core
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-if Pixelator.run_envs.include?(Rails.env)
|
2
|
+
- pixel_types ||= []
|
3
|
+
- types = ['all'].concat(pixel_types).concat(@pixel_types || []).uniq
|
4
|
+
- @scope ||= ''
|
5
|
+
|
6
|
+
:javascript
|
7
|
+
(function() {
|
8
|
+
$(document).ready(function() {
|
9
|
+
var pixelator = new Pixelator(PIXEL_DATA, '#{@scope}');
|
10
|
+
_.each(#{types}, function(p) {
|
11
|
+
pixelator.run(p);
|
12
|
+
});
|
13
|
+
});
|
14
|
+
})();
|
15
|
+
-else
|
16
|
+
:javascript
|
17
|
+
if (typeof(console) === "object" && typeof(console.log) === "function") {
|
18
|
+
console.log("NOTICE: Pixelator is OFF. Go to #{__FILE__} to turn on.\n" +
|
19
|
+
"It would run: #{types} for #{@scope}");
|
20
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
- Pixelator.pixels[:head].each do |pixel|
|
2
|
+
- name = pixel[:name]
|
3
|
+
- template = ERB.new(URI.unescape(pixel[:snippet]))
|
4
|
+
- context = OpenStruct.new(Pixelator.context)
|
5
|
+
- snippet = template.result(context.instance_eval { binding })
|
6
|
+
:plain
|
7
|
+
#{URI.unescape(snippet)}
|
data/config/routes.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
class PixelatorGenerator < Rails::Generators::Base
|
2
|
+
source_root File.expand_path('../templates', __FILE__)
|
3
|
+
|
4
|
+
def copy_initializer_file
|
5
|
+
copy_file "pixelator.rb", "config/initializers/pixelator.rb"
|
6
|
+
end
|
7
|
+
|
8
|
+
def copy_pixel_yaml
|
9
|
+
copy_file "pixels.yml", "config/pixels.yml"
|
10
|
+
end
|
11
|
+
|
12
|
+
def insert_require_pixelator_core
|
13
|
+
inject_into_file 'app/assets/javascripts/application.js', "//= require 'pixelator_core'\n",
|
14
|
+
before: "//= require_tree ."
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Pixelator.configure do |c|
|
2
|
+
c.config_file = Rails.root.join('config', 'pixels.yml')
|
3
|
+
# run_envs is set to only 'production' by default
|
4
|
+
#c.run_envs << 'test'
|
5
|
+
end
|
6
|
+
|
7
|
+
#add contextual data that the pixelator might need
|
8
|
+
# such as google analytics ...
|
9
|
+
#reference in pixels.yml snippet with
|
10
|
+
# <%= google_analytics %>
|
11
|
+
#Pixelator.context[:google_analytics] = 'GA_ACCOUNT'
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# This is where you define your pixels
|
2
|
+
# The top level is a key, which contains any array
|
3
|
+
# Each element in the array is a pixel with name, type, snippet, and partner TODO: change to scope
|
4
|
+
# The snippet is run through _underscore.js templating
|
5
|
+
# you can use <%= var %> in the snippet where var is defined in PIXEL_DATA.context['var']
|
6
|
+
# (see config/initalizers/pixelator.rb for how to do this server-side; can also be done in JS)
|
7
|
+
|
8
|
+
#these are included on the head of your page by rendering partial 'shared/pixelator_head'
|
9
|
+
#head:
|
10
|
+
# - name: google_analytics
|
11
|
+
# type: javascript
|
12
|
+
# snippet: |
|
13
|
+
# <script type="text/javascript">
|
14
|
+
# try {
|
15
|
+
# var _gaq = _gaq || [];
|
16
|
+
# _gaq.push(['_setAccount', '<%= google_analytics %>']);
|
17
|
+
# _gaq.push(['_trackPageview']);
|
18
|
+
#
|
19
|
+
# (function() {
|
20
|
+
# var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
21
|
+
# ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
22
|
+
# var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
23
|
+
# })();
|
24
|
+
# } catch(err) {}
|
25
|
+
# </script>
|
26
|
+
|
27
|
+
|
28
|
+
#all non-head pixels are included by calling:
|
29
|
+
# render partial: 'shared/pixelator', pixel_tages['all']
|
30
|
+
# OR
|
31
|
+
# new Pixelator(PIXEL_DATA, '').run('all');
|
32
|
+
#all:
|
33
|
+
# - name: google_analytics
|
34
|
+
# type: javascript
|
35
|
+
# snippet: |
|
36
|
+
# <script type="text/javascript">
|
37
|
+
# try {
|
38
|
+
# var _gaq = _gaq || [];
|
39
|
+
# _gaq.push(['_setAccount', '<%= google_analytics %>']);
|
40
|
+
# _gaq.push(['_trackPageview']);
|
41
|
+
#
|
42
|
+
# (function() {
|
43
|
+
# var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
44
|
+
# ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
45
|
+
# var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
46
|
+
# })();
|
47
|
+
# } catch(err) {}
|
data/lib/pixelator.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rails'
|
2
|
+
require "pixelator/engine"
|
3
|
+
|
4
|
+
|
5
|
+
module Pixelator
|
6
|
+
autoload :PixelatorController, 'pixelator/controllers/pixelator_controller'
|
7
|
+
|
8
|
+
class << self
|
9
|
+
attr_accessor :data
|
10
|
+
attr_accessor :config_file
|
11
|
+
attr_accessor :run_envs
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.configure
|
15
|
+
self.run_envs = ['production']
|
16
|
+
yield(self) if block_given?
|
17
|
+
self.data = HashWithIndifferentAccess.new
|
18
|
+
self.data[:pixels] = YAML.load_file(config_file).with_indifferent_access
|
19
|
+
self.data[:pixels].each do |k,v|
|
20
|
+
if v.is_a?(Array)
|
21
|
+
v.map! do |a|
|
22
|
+
a['snippet'] = URI.escape(a['snippet'])
|
23
|
+
a
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
self.data[:context] = HashWithIndifferentAccess.new
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.pixels
|
31
|
+
data[:pixels]
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.context
|
35
|
+
data[:context]
|
36
|
+
end
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,191 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pixelator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- HowAboutWe.com, Rebecca Miller-Webster, Marco Carag, Brendan Barr
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-05-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.2.6
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.2.6
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: haml
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: railties
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: jquery-rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: uglifier
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec-rails
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: capybara
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: jasmine
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: Add tracking pixels to your code in a manageable, performant way
|
140
|
+
email:
|
141
|
+
- dev@howaboutwe.com
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- app/assets/javascripts/core/generic_pixel.js
|
147
|
+
- app/assets/javascripts/core/pixelator.js
|
148
|
+
- app/assets/javascripts/pixelator_core.js
|
149
|
+
- app/controllers/pixelator_controller.rb
|
150
|
+
- app/views/pixelator/data.js.haml
|
151
|
+
- app/views/shared/_pixelator.html.haml
|
152
|
+
- app/views/shared/_pixelator_head.html.haml
|
153
|
+
- config/routes.rb
|
154
|
+
- lib/generators/pixelator/pixelator_generator.rb
|
155
|
+
- lib/generators/pixelator/templates/pixelator.rb
|
156
|
+
- lib/generators/pixelator/templates/pixels.yml
|
157
|
+
- lib/generators/pixelator/USAGE
|
158
|
+
- lib/pixelator/engine.rb
|
159
|
+
- lib/pixelator/version.rb
|
160
|
+
- lib/pixelator.rb
|
161
|
+
- lib/tasks/jasmine.rake
|
162
|
+
- lib/tasks/pixelator_tasks.rake
|
163
|
+
- MIT-LICENSE
|
164
|
+
- Rakefile
|
165
|
+
- README.markdown
|
166
|
+
homepage: http://wwww.github.com/howaboutwe/pixelator
|
167
|
+
licenses:
|
168
|
+
- MIT
|
169
|
+
metadata: {}
|
170
|
+
post_install_message:
|
171
|
+
rdoc_options: []
|
172
|
+
require_paths:
|
173
|
+
- lib
|
174
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - ! '>='
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - ! '>='
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: '0'
|
184
|
+
requirements: []
|
185
|
+
rubyforge_project:
|
186
|
+
rubygems_version: 2.0.3
|
187
|
+
signing_key:
|
188
|
+
specification_version: 4
|
189
|
+
summary: Add tracking pixels to your code in a manageable, performant way
|
190
|
+
test_files: []
|
191
|
+
has_rdoc:
|