:schedule:
Acknowledged Notification Deletions:
cron: '0 * * * *' # Runs every hour
class: NotificationsCleanupJob
description: "This job runs every hour cleaning up all notifications that have been acknowledged by users."
Certificate Renewal Notfications:
cron: '0 0 1 * *' # Runs on the first of every month at midnight.
class: CertificateRenewalNotificationJob
description: "This job checks the renewal status of user certs and sends an email notification when expiration is within 30 days."
:concurrency: 30
:dynamic: true
:queues:
- critical
- default
- low
:schedule:
Acknowledged Notification Deletions:
cron: '0 * * * *' # Runs every hour
class: NotificationsCleanupJob
description: "This job runs every hour cleaning up all notifications that have been acknowledged by users."
Certificate Renewal Notfications:
cron: '0 0 1 * *' # Runs on the first of every month at midnight.
class: CertificateRenewalNotificationJob
description: "This job checks the renewal status of user certs and sends an email notification when expiration is within 30 days."
:concurrency: 30
:dynamic: true
:queues:
- critical
- default
- low
- ahoy
#- Gather all visits with nil longitude, this should suffice.
visits = Ahoy::Visit.where(:longitude => nil)
#- Iterate over each visit in visits and queue the GeocodeJob to get the geodata
#- and update the record.
visits.each do |visit|
#- This job actually queues another job called GeocodeV2Job that does the actual lookup.
Ahoy::GeocodeJob.perform_now(visit)
end
2条答案
按热度按时间m528fe3b1#
免责声明
几个月前,我在申请时遇到了同样的问题。我知道这个问题几年前就被问到了,但我想花点时间分享一下我为解决这个问题所做的努力。
我的应用环境
我的问题
为了给予你背景和一些观点,我想创建一个交互式的3D地球仪,这将有助于可视化地理应用程序的使用.为了实现这一点,我知道我需要启用Ahoy的地理定位功能.我最初的计划只是要可视化它的国家,所以我只是试图得到的国家,其中访问起源.我很快发现的是,我有两个问题.
*Ahoy在以下字段中未显示任何数据:
*我在数据库中缺少以下与地理位置相关的字段。它们未显示在schema中。rb
为了帮助教育那些可能是ruby on rails新手的人,这里列出了我最初识别问题的步骤,并在进行更改后进行故障排除:
打开Rails控制台。
字符串
查询数据库(ActiveRecord)中的Ahoy访视记录。
型
返回以下哈希值。(出于明显的隐私考虑,以下哈希值中的某些值被替换为“.....”)
型
解决我的问题
我做的第一件事是创建一个迁移,将缺失的
latitude
和longitude
列添加到数据库(* 不确定为什么会缺失 *). Creating Ruby on Rails Migrations。型
现在,随着迁移的创建,我运行了以下命令来更新数据库:
型
接下来,我需要找出为什么地理位置数据没有被填充。最终,我在上面列出的
Sidekiq-Scheduler
gem的配置文件\..\config\sidekiq.yml
中为 Sidekiq 配置了3个队列。下面是我配置的内容:型
阅读回Sidekiq文档,我发现Ahoy的默认队列是
ahoy
,这对我来说很有意义。所以在这一点上我有两个选择。1.我可以更改Ahoy的默认队列,并使用已经创建的队列
low
(参见上面的sidekiq-scheduler配置)。我只需要在Sidekiq
的配置文件中添加Ahoy.job_queue = :low
,位于>\..\config\intializers\ahoy.rb
。1.或者,我可以保留Ahoy默认队列
ahoy
,只将其作为配置队列添加到Sidekiq-Scheduler
配置文件\..\config\sidekiq.yml
中,位于底部的:queues:
部分下。因此,它看起来像这样:型
我最终选择了选项2。在实现更改后,我重新启动了应用程序和
Sidekiq
示例。在观看Sidekiq
示例终端时,我重新访问了应用程序,并立即开始看到Ahoy的以下作业启动:型
之后,我验证了我确实在数据库中看到了地理位置数据,我决定创建一些代码在rails控制台中运行,以更新所有当前没有地理数据的先前访问。在我的情况下,只有大约700次访问 (~30秒更新),所以我并不担心试图咀嚼更多,我可以吞下。您可以根据需要修改,如果您有大量的访问,需要更新。只需复制,粘贴到rails控制台并运行它。
型
x6h2sr282#
要启用地理编码,请将此行添加到应用程序的Gemfile中:
字符串
然后更新
config/initializers/ahoy.rb
:型
地理编码在后台作业中执行,因此不会降低Web请求的速度。默认作业队列为
:ahoy
。将其更改为:型
重新启动rails服务器:
型
运行后台服务:
型
Here更详细。