thedrummeraki/tanoshimu

View on GitHub
app/jobs/admin/fetch_runnable_tasks.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Admin
  class FetchRunnableTasks < ApplicationOperation
    property :prefix, accepts: Array, converts: -> (value) { Array.wrap(value) }, default: -> { Array.new }

    def execute
      load_tasks!
      find_tasks
    end

    private

    def find_tasks
      RunnableTask.where(name: tasks)
    end

    def tasks
      Rake::Task.tasks.map(&:name).filter do |task_name|
        next true if prefix.blank?

        prefix.find do |possible_prefix|
          task_name.start_with?(possible_prefix)
        end
      end
    end

    def load_tasks!
      Rails.application.load_tasks
    end
  end
end