diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 398636ee6..ba2da462a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -19,10 +19,14 @@ class MissingParameterError < Exception; end rescue_from Exception do |exception| logger.error "Exception: #{exception.class}: #{exception.message}" - logger.error exception.backtrace.join("\n") @message = exception.message layout = request.xhr? ? false : "application" - notify_hoptoad(exception) + case exception + when Seeker::InvalidSearchTerm + else + logger.error exception.backtrace.join("\n") + notify_hoptoad(exception) + end render :template => 'error', :formats => [:html], :layout => layout, :status => 400 end diff --git a/app/models/seeker.rb b/app/models/seeker.rb index 22d9cd267..0493aba4d 100644 --- a/app/models/seeker.rb +++ b/app/models/seeker.rb @@ -14,13 +14,14 @@ def self.prepare_result(query, baseproject=nil, project=nil, exclude_filter=nil, end end + class InvalidSearchTerm < Exception; end class SearchResult < Array def self.search(query, baseproject, project=nil, exclude_filter=nil, exclude_debug=false) words = query.split(" ").select {|part| !part.match(/^[0-9_\.-]+$/) } versrel = query.split(" ").select {|part| part.match(/^[0-9_\.-]+$/) } logger.debug "splitted words and versrel: #{words.inspect} #{versrel.inspect}" - raise "Please provide a valid search term" if words.blank? && project.blank? + raise InvalidSearchTerm.new "Please provide a valid search term" if words.blank? && project.blank? xpath_items = Array.new xpath_items << "@project = '#{project}' " unless project.blank?