class ImageQualityCheck::DetermineQuality
Public Class Methods
new(model, column_name, tmp_file = nil)
click to toggle source
# File lib/image_quality_check/determine_quality.rb, line 8 def initialize(model, column_name, tmp_file = nil) @model = model @column_name = column_name @column = model.send(column_name) @messages = [] @tmp_file = tmp_file end
run(model, column_name, tmp_file = nil, &block)
click to toggle source
# File lib/image_quality_check/determine_quality.rb, line 4 def self.run(model, column_name, tmp_file = nil, &block) new(model, column_name, tmp_file).run(&block) end
Public Instance Methods
run() { |result| ... }
click to toggle source
# File lib/image_quality_check/determine_quality.rb, line 16 def run(&block) unless @tmp_file @tmp_file = Tempfile.new(['image_quality']) unless read!(@tmp_file) result = { quality: 0, details: {}, messages: [{ name: I18n.t('image_quality_check.not_found'), quality: 0 }] } yield(result) if block_given? return result end end @analyse_result = ImageQualityCheck.analyze(@tmp_file.path) result = { quality: determine_quality, details: @analyse_result, messages: @messages, } yield(result) if block_given? result end
Private Instance Methods
determine_quality()
click to toggle source
# File lib/image_quality_check/determine_quality.rb, line 42 def determine_quality qualities = [] sum_of_weights = 0 ImageQualityCheck.rules_for(@model.class, @column_name).each do |qq| error = nil on_error = ->(msg) { error = msg } result = instance_exec(@analyse_result, on_error, &qq[:block]) @messages << { name: qq[:name], quality: result, message: error } if result qualities << result * qq[:weight] sum_of_weights += qq[:weight] end end (qualities.sum / sum_of_weights.to_f).round end
read!(tmp_file)
click to toggle source
# File lib/image_quality_check/determine_quality.rb, line 63 def read!(tmp_file) case @column.class.to_s when "Paperclip::Attachment" if !@column.path || !File.exist?(@column.path) false else FileUtils.cp(@column.path, tmp_file.path) true end else raise NotImplementedError, @column.class end end