class Resque::Plugins::JobHistory::JobSearch
This class searches through jobs looking for one which matches the passed in criteria.
Constants
- ALL_ATTRIBUTES
- DEFAULT_SEARCH_TIMEOUT
- SEARCH_TYPES
Public Class Methods
new(params)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 25 def initialize(params) params = params.with_indifferent_access ALL_ATTRIBUTES.each do |attribute| instance_variable_set("@#{attribute}", params[attribute]) if params.key?(attribute) end raise ArgumentError, "invalid search_type" unless SEARCH_TYPES.include?(search_type) end
Public Instance Methods
class_results()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 68 def class_results @class_results ||= [] end
more_records?()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 76 def more_records? last_class_name || last_job_id end
retry_search_settings(all_settings)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 34 def retry_search_settings(all_settings) settings = search_settings(all_settings) %i[last_class_name last_job_id last_job_group].each do |continue_setting| settings.delete(continue_setting) end settings end
run_results()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 72 def run_results @run_results ||= [] end
search()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 62 def search end_search? send search_type end
search_settings(all_settings)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 46 def search_settings(all_settings) settings = ALL_ATTRIBUTES.dup unless all_settings settings.delete :search_for settings.delete :regex_search settings.delete :case_insensitive end settings.each_with_object({}) do |setting, hash| hash[setting] = send(setting) hash.delete(setting) if hash[setting].blank? end end
search_timeout()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 80 def search_timeout DEFAULT_SEARCH_TIMEOUT end
Private Instance Methods
add_class_job_results(job_list)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 213 def add_class_job_results(job_list) job_list.each do |job| run_results << job if validate_string(Resque.encode(job.args)) @last_job_id = job.job_id break if end_search? end end
end_search?()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 90 def end_search? Time.now > search_end_time end
remove_searched_job_classes(search_jobs)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 168 def remove_searched_job_classes(search_jobs) last_index = if last_class_name.present? job_index = search_jobs. index { |job_class| job_class.class_name == last_class_name } || search_jobs.length job_index += 1 if last_job_id.blank? job_index else 0 end if last_index.positive? Array.wrap(search_jobs[last_index..-1]) else search_jobs end end
remove_searched_jobs(job_list, job_group)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 222 def remove_searched_jobs(job_list, job_group) last_index = if last_job_id.present? && job_group == last_job_group (job_list.index { |job_run| job_run.job_id == last_job_id } || job_list.length) + 1 else 0 end if last_index.positive? Array.wrap(job_list[last_index..-1]) else job_list end end
search_all()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 94 def search_all job_list = Resque::Plugins::JobHistory::JobList.new search_jobs = job_list.job_classes.sort.map { |class_name| job_list.job_details(class_name) } search_class_names(search_jobs) unless last_class_name && last_job_id return if end_search? && last_class_name.present? && !last_job_id search_all_class_jobs(search_jobs) end
search_all_class_jobs(search_jobs)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 105 def search_all_class_jobs(search_jobs) search_jobs = remove_searched_job_classes(search_jobs) search_jobs.each do |job_class| search_job_class job_class @last_class_name = job_class.class_name break if end_search? && last_job_id.present? end @last_class_name = nil if search_jobs.blank? || !end_search? || last_job_id.blank? end
search_class_jobs(job_list, job_group)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 198 def search_class_jobs(job_list, job_group) return if last_job_group.present? && last_job_group.to_s != job_group.to_s job_list = remove_searched_jobs(job_list, job_group) @last_job_group = job_group add_class_job_results(job_list) return if job_list.present? && end_search? @last_job_id = nil @last_job_group = nil end
search_class_names(search_jobs)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 155 def search_class_names(search_jobs) search_jobs = remove_searched_job_classes(search_jobs) search_jobs.each do |job_class| class_results << job_class if validate_string(job_class.class_name) @last_class_name = job_class.class_name break if end_search? end @last_class_name = nil if search_jobs.blank? || !end_search? end
search_end_time()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 86 def search_end_time @search_end_time ||= search_timeout.from_now end
search_job()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 119 def search_job job_class = Resque::Plugins::JobHistory::HistoryDetails.new(job_class_name) search_job_class(job_class) end
search_job_class(job_class)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 188 def search_job_class(job_class) if last_job_group.blank? || last_job_group == :running_jobs search_class_jobs(job_class.running_jobs.jobs, :running_jobs) return unless !end_search? || last_job_id.blank? end search_class_jobs(job_class.finished_jobs.jobs, :finished_jobs) end
search_linear_history()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 125 def search_linear_history job_class = Resque::Plugins::JobHistory::JobList.new search_class_jobs(job_class.linear_jobs.jobs, :linear_jobs) end
search_regex()
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 131 def search_regex @search_regex = if search_for.blank? search_for elsif regex_search Regexp.new(search_for, case_insensitive) elsif case_insensitive search_for.downcase else search_for end end
validate_string(value)
click to toggle source
# File lib/resque/plugins/job_history/job_search.rb, line 143 def validate_string(value) if search_regex.blank? value == "[]" elsif regex_search value.match(search_regex) elsif case_insensitive value.downcase.include?(search_regex) else value.include?(search_regex) end end