mixpanel-rails 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2a402c13b28c27567c34a3a9bb97601a2faaa253
4
+ data.tar.gz: 2af1d7fde1b4d954f9bbde834062cc64e5c25003
5
+ SHA512:
6
+ metadata.gz: 4ba26f1b40e7b8bd65157f312c9dd0ac4ec4a4bd6d2d886e59f5ac5677e4da178e44b6b46d72a8d501f34789520b25c090b9eb74bccc653854035b127873d377
7
+ data.tar.gz: 9850bbdd3de84544d6ff8d161afbcd0cabdeb4b7cd4ebd173cfb0b7662582da160aa0aafc17097c1ea62a14d836eec0bca7e016c6b8df54657965d9a60d47b17
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mixpanel-rails.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Charles Lowell
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,45 @@
1
+ # Mixpanel::Rails
2
+
3
+ Painlessly integrate your rails application with [Mixpanel][1]
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'mixpanel-rails'
10
+
11
+ ## Configuration
12
+
13
+ Set the `config.mixpanel.api_token` parameter in your applications configuration or
14
+ the `MIXPANEL_API_TOKEN` environment variable. e.g.
15
+
16
+ # config/environments/staging.rb
17
+ config.mixpanel.token = 'XYZ'
18
+ config.mixpanel.options = {:async => true}
19
+
20
+ Want to use the [middleware for tracking with JavaScript][2]?
21
+
22
+ # config/application.rb
23
+ config.mixpanel.middleware.use = true
24
+ config.mixpanel.middleware.persist = false
25
+ config.mixpanel.middlware.insert_js_last = true
26
+ config.mixpanel.middleware.config = {:cookie_name => 'mixpanel_cookie' }
27
+
28
+ ## Usage
29
+
30
+ You can now access a pre-configured instance of `Mixpanel::Tracker` from anywhere in
31
+ your application by including the `Mixpanel::Helper` module:
32
+
33
+ class User < ActiveRecord::Base
34
+ include Mixpanel::Helper
35
+ after_create :notify_mixpanel
36
+
37
+ def notify_mixpanel
38
+ mixpanel.track 'User Created', :distinct_id => self.id
39
+ end
40
+ end
41
+
42
+ Alternatively, you can use `Rails.application.mixpanel` if you don't want to include the module
43
+
44
+ [1]: http://mixpanel.com
45
+ [2]: https://github.com/zevarito/mixpanel#rack-middleware
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1 @@
1
+ require 'mixpanel/rails'
@@ -0,0 +1,38 @@
1
+ require 'mixpanel'
2
+
3
+ module Mixpanel
4
+ class Engine < ::Rails::Railtie
5
+
6
+ Config = Struct.new(:token, :options, :middleware)
7
+ MiddlewareConfig = Struct.new(:use, :insert_js_last, :persist, :config)
8
+
9
+ config.mixpanel = Config.new(nil, {}, MiddlewareConfig.new(false, false, false, {}))
10
+
11
+
12
+ initializer 'mixpanel.setup' do |app|
13
+ class << app
14
+ attr_accessor :mixpanel
15
+ end
16
+ config.mixpanel.token ||= ENV['MIXPANEL_TOKEN']
17
+ $stderr.puts <<-WARNING unless config.mixpanel.token
18
+ No Mixpanel token was configured for environment #{::Rails.env}! this application will be
19
+ unable to interact with mixpanel.com. You can set your token with either the environment
20
+ variable `MIXPANEL_TOKEN` (recommended) or by setting `config.mixpanel.token` in your
21
+ environment file directly.
22
+ WARNING
23
+ app.mixpanel = Mixpanel::Tracker.new config.mixpanel.token, config.mixpanel.options
24
+ end
25
+
26
+ initializer 'mixpanel.middleware' do |app|
27
+ mixpanel = config.mixpanel
28
+ middleware = mixpanel.middleware
29
+ if middleware.use
30
+ config.middleware.use 'Mixpanel::Middleware', mixpanel.token, {
31
+ :insert_js_last => middleware.insert_js_last,
32
+ :persist => middleware.persist,
33
+ :config => middleware.config
34
+ }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ module Mixpanel
2
+ module Helper
3
+ def mixpanel
4
+ config = ::Rails.application.config
5
+ Mixpanel::Tracker.new(config.mixpanel.token, config.mixpanel.options.merge(mixpanel_options)).tap do |tracker|
6
+ tracker.extend TrackerProperties
7
+ tracker.mixpanel_properties = mixpanel_properties
8
+ end
9
+ end
10
+
11
+ def mixpanel_properties
12
+ {}
13
+ end
14
+
15
+ def mixpanel_options
16
+ {}
17
+ end
18
+
19
+ module TrackerProperties
20
+ attr_accessor :mixpanel_properties
21
+
22
+ def track(event_name, properties = {}, options = {})
23
+ super event_name, mixpanel_properties.merge(properties), options
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ require 'mixpanel/rails/version'
2
+ require 'mixpanel/engine'
3
+ require 'mixpanel/helper'
@@ -0,0 +1,5 @@
1
+ module Mixpanel
2
+ module Rails
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mixpanel/rails/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "mixpanel-rails"
8
+ gem.version = Mixpanel::Rails::VERSION
9
+ gem.authors = ["Charles Lowell"]
10
+ gem.email = ["cowboyd@thefrontside.net"]
11
+ gem.description = %q{A Rails Engine for Mixpanel}
12
+ gem.summary = %q{Autoconfigure your Rails environment for use with Mixpanel}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'rails', '~> 3.0'
21
+ gem.add_dependency 'mixpanel', '~> 3.0'
22
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mixpanel-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Charles Lowell
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRAwDgYDVQQDDAdjb3di
14
+ b3lkMRwwGgYKCZImiZPyLGQBGRYMdGhlZnJvbnRzaWRlMRMwEQYKCZImiZPyLGQB
15
+ GRYDbmV0MB4XDTEzMDEzMDIxMDYwNFoXDTE0MDEzMDIxMDYwNFowRTEQMA4GA1UE
16
+ AwwHY293Ym95ZDEcMBoGCgmSJomT8ixkARkWDHRoZWZyb250c2lkZTETMBEGCgmS
17
+ JomT8ixkARkWA25ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO45
18
+ CUxpETDGYXjCCy2dMg/aIrdrTqBqQW5ZrzhHxF9EkcdmWFr0z/qMz0JSpZ3pF11Z
19
+ KYaj5PaQQpjZfLPwbuiGGkuSWi+UAac//V18xo6S4lzRBjO+gpzG9f2AOzt9b+SR
20
+ Uc8UhO7QBZ5edUDxMxw9QstD+U0YBAlzsPJbHuUOqdtxXmNQCds3ZnqTgZaIpdUy
21
+ CSejtrukSmlthxFzwgMezYQhcYxmkl+Q475JUodnI6Pjc6nja/Or8Y6cEWiLgeUa
22
+ a+efcPGLDEbwJC7TGRrvk8yassMByBEJ3XueTMzeqWFd+665ptciojYo6BvIAR0N
23
+ iLwks0x567FZyS8SqTcCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUxVgR
24
+ 5TUqf7Hd24ICb3g4FNbM7oYwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IB
25
+ AQDdJj+NzZhiYXA56z0wzRUA/Fcf6CYqKB+RFRlPssDEcHTor5SnwdWgQof/gNLi
26
+ Qel1Om4zO0Shcp89jxaUqtvEdYVhmyfc0vycHmemKttNBT734yMrEJtF8Hhy+Dnz
27
+ 9CzixXLvgGaRH+mf3M0+l+zIDJJr2L+39L8cyTSSRnp/srfI8aSmJKhGshudBKoC
28
+ Ty6Gi071pwoJXvdMaE/6iPy7bUzlndYdHyYuWSKaO9N47HqQ62oEnBraglw6ghoi
29
+ UgImJlChAzCoDP9zi9tdm6jAr7ttF25R9PPYr11ILb7dYe3qUzlNlM6zJx/nb31b
30
+ IhdyRVup4qLcqYSTPsm6u7VA
31
+ -----END CERTIFICATE-----
32
+ date: 2013-05-29 00:00:00.000000000 Z
33
+ dependencies:
34
+ - !ruby/object:Gem::Dependency
35
+ name: rails
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '3.0'
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: mixpanel
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ description: A Rails Engine for Mixpanel
63
+ email:
64
+ - cowboyd@thefrontside.net
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - Gemfile
71
+ - LICENSE.txt
72
+ - README.md
73
+ - Rakefile
74
+ - lib/mixpanel-rails.rb
75
+ - lib/mixpanel/engine.rb
76
+ - lib/mixpanel/helper.rb
77
+ - lib/mixpanel/rails.rb
78
+ - lib/mixpanel/rails/version.rb
79
+ - mixpanel-rails.gemspec
80
+ homepage: ''
81
+ licenses: []
82
+ metadata: {}
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.0.0
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: Autoconfigure your Rails environment for use with Mixpanel
103
+ test_files: []