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.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in mixpanel_rails.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,3 @@
1
+ module MixpanelRails
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,56 @@
1
+ require "mixpanel_rails/version"
2
+ require 'mixpanel'
3
+
4
+ module MixpanelRails
5
+ class Railtie < Rails::Railtie
6
+ config.mixpanel_rails = ActiveSupport::OrderedOptions.new
7
+ config.mixpanel_rails.middleware = Mixpanel::Tracker::Middleware
8
+ initializer 'mixpanel_rails' do |app|
9
+ app.middleware.use app.config.mixpanel_rails.middleware, app.config.mixpanel_rails.token, :async => true
10
+ ActiveSupport.on_load :action_controller do
11
+ self.class.send :include, ClassMethods
12
+ end
13
+ end
14
+ end
15
+
16
+ module ClassMethods
17
+ def uses_mixpanel(args = {})
18
+ cattr_accessor :mixpanel_distinct_id, :mixpanel_name_tag
19
+ self.mixpanel_distinct_id = args[:distinct_id] || lambda {}
20
+ self.mixpanel_name_tag = args[:name_tag] || lambda {}
21
+ include MixpanelRails::InstanceMethods
22
+ after_filter :process_mixpanel_queue
23
+ end
24
+ end
25
+
26
+ module InstanceMethods
27
+ def track_with_mixpanel(s)
28
+ mixpanel_queue << s
29
+ end
30
+
31
+ def process_mixpanel_queue
32
+ unless response.redirect_url
33
+ mixpanel = Mixpanel::Tracker.new(MixpanelRails::Railtie.config.mixpanel_rails.token, request.env, true)
34
+ if env["Rack-Middleware-PDFKit"]
35
+ mixpanel_queue.each {|s| mixpanel.track_event(s, register_with_mixpanel) }
36
+ else
37
+ name_tag = mixpanel_name_tag.bind(self).call
38
+ mixpanel.append_api(:register, register_with_mixpanel)
39
+ mixpanel.append_api(:name_tag, name_tag) if name_tag
40
+ mixpanel_queue.each {|s| mixpanel.append_api :track, s }
41
+ end
42
+ session.delete :register_with_mixpanel
43
+ session.delete :mixpanel_queue
44
+ end
45
+ end
46
+
47
+ def register_with_mixpanel
48
+ distinct_id = mixpanel_distinct_id.bind(self).call
49
+ session[:register_with_mixpanel] ||= distinct_id ? { distinct_id: distinct_id } : {}
50
+ end
51
+
52
+ def mixpanel_queue
53
+ session[:mixpanel_queue] ||= []
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "mixpanel_rails/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "mixpanel_rails"
7
+ s.version = MixpanelRails::VERSION
8
+ s.authors = ["Paul McMahon"]
9
+ s.email = ["paul@mobalean.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Easy mixpanel integration for rails}
12
+ s.description = %q{Track stuff using javascript from your controllers, even after redirects}
13
+
14
+ s.rubyforge_project = "mixpanel_rails"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_dependency 'mixpanel', '~> 1.0.0'
22
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mixpanel_rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Paul McMahon
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-13 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mixpanel
16
+ requirement: &2156876620 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2156876620
25
+ description: Track stuff using javascript from your controllers, even after redirects
26
+ email:
27
+ - paul@mobalean.com
28
+ executables: []
29
+ extensions: []
30
+ extra_rdoc_files: []
31
+ files:
32
+ - .gitignore
33
+ - Gemfile
34
+ - Rakefile
35
+ - lib/mixpanel_rails.rb
36
+ - lib/mixpanel_rails/version.rb
37
+ - mixpanel_rails.gemspec
38
+ homepage: ''
39
+ licenses: []
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubyforge_project: mixpanel_rails
58
+ rubygems_version: 1.8.6
59
+ signing_key:
60
+ specification_version: 3
61
+ summary: Easy mixpanel integration for rails
62
+ test_files: []