我有这个telegrambot.rb文件
require 'telegram/bot'
require 'rake'
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
Myapp::Application.load_tasks
token = "mytoken"
Telegram::Bot::Client.run(token) do |bot|
bot.listen do |message|
case message.text
when "Try"
pp "before task"
Rake::Task["alpha:try"].invoke
pp "after task"
end
end
end
然后在我的任务中,我有这个任务只涉及db中的产品:
namespace :alpha
task try: :environment do
pp "in the task"
prod = BaseProduct.first
prod.touch(:updated_at)
end
end
现在,如果我发送消息,一切都按预期工作,我得到了 “在任务之前” “在任务中” “任务结束后” 此外,如果我检查数据库已触摸产品。 但是,如果我再次发送消息,我会得到这个结果 “在任务之前” “任务结束后” 当然,该产品尚未触及。 此外,不会引发错误,就像启动任务的指令被绕过一样。 有什么想法吗?
答案 0 :(得分:0)
问题出在rake的invoke方法中,该方法只调用一次任务。 执行后在任务中添加reenable解决了问题。