我刚刚将ahoy gem安装到我的Rails 5.1.3应用程序中。我正在取回visit
和event
,但访问位置属性总是返回country: "Reserved"
,region: nil
,city: nil
,postal_code: nil
。这是我按照Ahoy github上的说明实现的。任何人都可以阐明我错过了什么或做错了什么?这在生产环境和开发环境中都有发生。
application.js
$(document).ready(function(){
ahoy.trackAll();
});
Gemfile
gem 'ahoy_matey'
# Did not include geocoder because it is detailed in the documents as a dependency.
访问示例:
[2] pry(main)> Visit.last
Visit Load (0.5ms) SELECT "visits".* FROM "visits" ORDER BY "visits"."id" DESC LIMIT $1 [["LIMIT", 1]]
=> #<Visit:0x007fd045e04b48
id: 2,
visit_token: "7750594c-7163-46c1-8ec7-18f3069619d0",
visitor_token: "efdcb332-742a-4de3-971b-c141f24ff0f6",
ip: "74.174.236.84",
user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
referrer: nil,
landing_page: "http://my_website.com/users/sign_in",
user_id: nil,
referring_domain: nil,
search_keyword: nil,
browser: "Chrome",
os: "Mac OS X",
device_type: "Desktop",
screen_height: 800,
screen_width: 1280,
country: "Reserved",
region: nil,
city: nil,
postal_code: nil,
latitude: 0.0,
longitude: 0.0,
utm_source: nil,
utm_medium: nil,
utm_term: nil,
utm_content: nil,
utm_campaign: nil,
started_at: Wed, 22 Nov 2017 21:10:52 UTC +00:00>
1条答案
按热度按时间qojgxg4l1#
问题不在于
Ahoy
gem本身,因为它只是跟踪用户设备,而不是位置服务。要获取位置属性,我们可以使用Geocoder
沿着Ahoy。Gemfile
将
Geocoder
添加到Gemfile中,因为它在Ahoy文档中被列为依赖项:地理编码
可以通过以下方法之一来实现:
1.作为后台作业(默认和推荐)
地理编码在后台作业中执行,因此不会减慢Web请求。默认作业队列是
:ahoy
。在config/initializers/ahoy.rb中启用地理编码和后台作业队列:启动后台作业处理库,如果您在终端中使用
sidekiq
类型:2.无后台作业(不推荐)
不需要在config/initializers/ahoy.rb中启用地理编码和设置作业队列,只需将此代码添加到
Ahoy::Visit
模型中即可自行设置属性。开发
IP地址在开发和生产环境中的行为不同。如果您在开发/测试环境中从Ahoy对象或简单地使用
request.ip
调试IP地址,它将看起来像127.0.0.1
或::1
,这不是检测位置的有效IP。将以下代码添加到config/environments/development.rb:
重新启动服务器,更新后的IP地址和位置数据将添加到Ahoy对象中:
获取随机IP地址的方法:
1.使用随机方法:
1.在开发/测试中使用Faker gem:
制作
在添加Geocoder Gem并如上所述使用Ahoy配置它之后,它将正常工作。