2016-11-01 4 views
0

У меня есть этот файл telegrambot.rbзадачи Rake внутри телеграммы бот жемчужину

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 

Тогда в моих задач у меня есть эта задача, которая только прикасается продукт в БД:

namespace :alpha 
    task try: :environment do 
     pp "in the task" 
     prod = BaseProduct.first 
     prod.touch(:updated_at) 
    end 
end 

Теперь, если я отправить сообщение все работает как ожидалось, и я получаю «перед задачей» «в задаче» «после задачи» Также, если я проверил db, продукт был затронут. Но, если я отправлю сообщение снова, я получаю этот результат «Перед заданием» «после задачи» И, конечно, продукт не был затронут. Кроме того, никакая ошибка не возникает, как если бы команда, запускающая задачу, обходилась. Любые идеи?

ответ

0

Проблема была в методе вызова rake, который вызывает вызов только один раз. Добавление повторно заданной задачи после выполнения решения проблемы.

Смежные вопросы