如何使用 mixpanel-ruby gem 来追踪事件?

How do I use mixpanel-ruby gem to track events?

我正在 Rails 应用程序上将 Mixpanel 集成到我的 Ruby 中。我为客户端视图跟踪正确集成了 Javascript 标签。

我还以各种方式在我的模型和控制器中为服务器端事件放置了 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

我有一个评论模型,我想在其中跟踪添加评论的时间。

models/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 的服务器时出现连接错误。为了解决这个问题,我在 initializers/mixpanel.rb 添加了问题讨论中建议的代码片段。

initializers/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 错误补丁,以及一个更新的 Heroku 配置和我的 Mixpanel 令牌。所有这些,现在 Mixpanel 正在正确跟踪我的服务器端事件。