better error message when searching comments with metatags

This commit is contained in:
albert
2013-03-02 20:55:46 -05:00
parent c6c1da5de0
commit 43a32efdc5
3 changed files with 26 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ class CommentsController < ApplicationController
respond_to :html, :xml, :json respond_to :html, :xml, :json
before_filter :member_only, :only => [:update, :create, :edit, :destroy] before_filter :member_only, :only => [:update, :create, :edit, :destroy]
rescue_from User::PrivilegeError, :with => "static/access_denied" rescue_from User::PrivilegeError, :with => "static/access_denied"
rescue_from ActiveRecord::StatementInvalid, :with => :search_error
def index def index
if params[:group_by] == "comment" if params[:group_by] == "comment"
@@ -90,4 +91,16 @@ private
raise User::PrivilegeError raise User::PrivilegeError
end end
end end
protected
def search_error(e)
if e.message =~ /syntax error in tsquery/
@error_message = "Meta-tags are not supported in comment searches by tag"
render :template => "static/error", :status => 500
else
@exception = e
render :template => "static/error", :status => 500
end
end
end end

View File

@@ -42,12 +42,21 @@ module PostSets
raise SearchError.new("Upgrade your account to search more than two tags at once") raise SearchError.new("Upgrade your account to search more than two tags at once")
end end
timeout = 3000
if tag_array.any? {|x| x =~ /^source:.*\*.*pixiv/} if tag_array.any? {|x| x =~ /^source:.*\*.*pixiv/}
raise SearchError.new("Your search took too long to execute and was canceled") timeout = 300
end end
@posts ||= begin @posts ||= begin
temp = ::Post.tag_match(tag_string).paginate(page, :count => ::Post.fast_count(tag_string), :limit => per_page) temp = ::Post.with_timeout(500, nil) do
::Post.tag_match(tag_string).paginate(page, :count => ::Post.fast_count(tag_string), :limit => per_page)
end
if temp.nil?
raise SearchError.new("Your search took too long to execute and was canceled")
end
temp.all temp.all
temp temp
end end

View File

@@ -7,7 +7,7 @@
<%= search_field "body_matches", :label => "Body" %> <%= search_field "body_matches", :label => "Body" %>
<%= search_field "creator_name", :label => "User" %> <%= search_field "creator_name", :label => "User" %>
<%= search_field "post_tags_match", :label => "Tags" %> <%= search_field "post_tags_match", :label => "Tags", :hint => "Meta-tags not supported" %>
<%= submit_tag "Search" %> <%= submit_tag "Search" %>
<% end %> <% end %>
</div> </div>