如何使用 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 正在正确跟踪我的服务器端事件。
我正在 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 正在正确跟踪我的服务器端事件。