Использование простого планировщика Gem для планирования задач в приложении Rails - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь запустить метод, который добавляет ответ от вызова API к Cache, я решил использовать simple_scheduler gem

Ниже приведены фрагменты кода, который я выполняю

#  update_cache_job.rb

class UpdateCacheJob < ActiveJob::Base
  def perform
    return QueuedJobs.new.update_cache
  end
end

И

# simple_scheduler.yml

# Global configuration options. The `queue_ahead` and `tz` options can also be set on each task.
queue_ahead: 120 # Number of minutes to queue jobs into the future
queue_name: "default" # The Sidekiq queue name used by SimpleScheduler::FutureJob
tz: "nil" # The application time zone will be used by default if not set

# Runs once every 2 minutes
simple_task:
  class: "UpdateCacheJob"
  every: "2.minutes"

И метод, который я запланировал запускать каждые 2 минуты

class QueuedJobs
  include VariableHelper
    def initialize; end

    def update_cache
      @variables = obtain_software_development_table
       #   First refresh the project Reviews

       puts 'Updating reviews...'

       @records = Dashboard.new.obtain_projects_reviews.pluck(
       obtain_project_reviews_student_variable,
       obtain_project_reviews_id_variable,
     'Project'
           ).map { |student, id, project| { 'Student': student, 'ID': id,   
     'Project': project } }
       Rails.cache.write(
       :reviews,
       @records,
       expires_in: 15.minutes
       )
       @grouped_reviews = Rails.cache.read(
       :reviews
       ).group_by do |review|
       review[:Student]&.first
     end

     puts 'reviews refreshed.'

    #   Then refresh the coding challenges submissions

    puts "Updating challenges submissions.."
    @all_required_submissions_columns = Dashboard.new.all_coding_challenges_submissions.all.map do |submission|
      {
        id: submission.id,
        'Student': submission[obtain_coding_chall_subm_student_var],
        'Challenge': submission[obtain_coding_chall_subm_challenge_var]
      }
    end
    @all_grouped_submissions = @all_required_submissions_columns.group_by { |challenge| challenge[:Student]&.first }
    Rails.cache.write(
      :challenges_submissions,
      @all_grouped_submissions,
      expires_in: 15.minutes
    )

    puts "challenges submissions refreshed."
    end
end

Мне удалось получить доступ к этим методам из консоли rails, но когда я запускаю rake simple_scheduler Он просто регистрирует первые путы, а иногда вообще ничего не делает.

Что мне здесь делать?

...