我有一个仅在ruby中制作的电报机器人,执行机器人我有一个运行我的ruby文件的二进制文件。最重要的部分是收听用户的新消息。
Telegram::Bot::Client.run(token) do |bot|
bot.listen do |message|
call other methods here
但是现在我想从这个简单的ruby项目转移到rails应用程序,因为我想开始开发更复杂的功能。 那么如何创建一个始终运行此监听器的任务呢?我读了一些关于ActiveJob和Sidekiq的内容,但我不知道如何实现这一目标。
感谢。
答案 0 :(得分:1)
ActiveJob和Sidekiq不是您所需要的。那些是在后台执行有限的工作。你需要一种独立于Rails应用程序启动的守护进程。 看一下这个https://github.com/thuehlinger/daemons
答案 1 :(得分:0)
我认为Rake Task会是完美的选择。无需其他gem,您只需在服务器上设置它的运行时间表即可。
在当前情况下,我想运行一个过程,该过程会自动将已存在48小时以上的记录标记为declined
。
因此,我在.rake
目录bin/tasks/
内创建了一个decline_stale_records.rake
文件。
里面的文件代码有点像这样:
desc 'Decline stale records'
task decline_stale_records: :environment do
stale_records = Records.where('created_at >= ?', 48.hours.ago).where.not(approval_status: 'declined')
stale_records.update_all(approval_status: 'declined')
end
在Heroku中,您可以安排这些文件在您的首选时间运行,请阅读此guide。