我还以各种方式为我的模型和控制器中的服务器端事件添加了Mixpanel跟踪标记,但没有成功.以下是我尝试过的一个例子:
我已经安装了mixpanel-ruby gem并添加了以下代码:
/initializers/mixpanel.rb
require 'mixpanel-ruby' if Rails.env == "development" tracker = Mixpanel::Tracker.new(ENV['MIXPANEL_DEV_TOKEN']) end if Rails.env == "production" tracker = Mixpanel::Tracker.new(ENV['MIXPANEL_PROD_TOKEN']) end
我有一个模型评论,我想跟踪添加评论的时间.
车型/ review.rb
class Review < ActiveRecord::Base after_create :track_review def track_review tracker.track('User', 'Added Review') end
Ruby instructions from Mixpanel(不是特定于Rails应用程序)说至少需要这些部分:
require 'mixpanel-ruby' tracker = Mixpanel::Tracker.new(PROJECT_TOKEN) # Tracks an event, 'Sent Message', # with distinct_id user_id tracker.track(user_id, 'Sent Message')
我有这些,但没有错误,没有事件出现在Mixpanel(它正确显示我的客户端视图事件).那么我做错了什么?提前致谢!
我用3个修复解决了这个问题:1:在initializers / mixpanel.rb中声明的变量需要是一个写为$variable的全局变量.我通过添加一个美元符号将其更改为全局变量,然后将我的环境变量移动到我的application.yml文件(我正在使用Figaro).
2:在开发过程中,我遇到了Mixpanel’s Git issues中记录的一个罕见的SSL错误.一位朋友帮助我使用调试器来发现从我的开发环境调用Mixpanel的服务器时出现连接错误.为了解决这个问题,我在初始化程序/ mixpanel.rb中添加了一个在问题讨论中建议的代码段.
初始化/ mixpanel.rb
require 'mixpanel-ruby' $tracker = Mixpanel::Tracker.new(ENV['MIXPANEL_TOKEN']) if Rails.env.development? #silence local SSL errors Mixpanel.config_http do |http| http.verify_mode = OpenSSL::SSL::VERIFY_NONE end end
3:在生产中,我仍然无法让事情发挥作用.事实证明,我需要在Heroku的环境变量中设置我的Mixpanel配置令牌.我在命令行中使用了以下内容来执行此操作
heroku config:set MIXPANEL_TOKEN=my_token_string_goes_here
完成所有这些操作后,我为Mixpanel跟踪器提供了一个正确声明的全局变量,一个包含开发和产品令牌的环境文件,一个SSL错误补丁,以及一个带有我的Mixpanel令牌的更新的Heroku配置.所有这些以及现在的Mixpanel正在正确地跟踪我的服务器端事件.