Commit 46c4ca18
Changed files (3)
app
app/controllers/application_controller.rb
@@ -1,5 +1,16 @@
class ApplicationController < ActionController::Base
protect_from_forgery
+ before_filter :initialize_env
+
+ private
+ def initialize_env
+ @request_env = {
+ 'REMOTE_ADDR' => request.env['REMOTE_ADDR'],
+ 'HTTP_X_FORWARDED_FOR' => request.env['HTTP_X_FORWARDED_FOR'],
+ 'rack.session' => request.env['rack.session'].to_hash,
+ 'mixpanel_events' => request.env['mixpanel_events']
+ }
+ end
def resolve(target)
target.new(current_user)
app/models/mix_panel.rb
@@ -0,0 +1,6 @@
+class MixPanel
+ def self.track(name, properties, env)
+ # Notice we are using the 'mixpanel' queue
+ Delayed::Job.enqueue MixpanelWorker.new(name, properties, env), queue: 'mixpanel'
+ end
+end
app/services/commands/mixpanel_worker.rb
@@ -0,0 +1,9 @@
+class MixpanelWorker < Struct.new(:name, :properties, :request_env)
+ MIXPANEL_TOKEN = "7b1aa3b32ab81758228d1c95115cfc7e"
+
+ def perform
+ return unless Rails.env.production?
+ @mixpanel = Mixpanel::Tracker.new(MIXPANEL_TOKEN, { :env => request_env })
+ @mixpanel.track(name, properties)
+ end
+end