diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c2d2be194..9d6e45271 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -9,9 +9,19 @@ class ApplicationController < ActionController::Base layout "default" rescue_from User::PrivilegeError, :with => :access_denied + rescue_from Danbooru::Paginator::PaginationError, :with => :render_pagination_limit protected - + def rescue_exception(exception) + @exception = exception + render :action => "static/error", :status => 500 + end + + def render_pagination_limit + @error_message = "You can view up to 1,000 pages. Please narrow your search terms." + render :action => "static/error", :status => 410 + end + def access_denied previous_url = params[:url] || request.fullpath diff --git a/app/controllers/legacy_controller.rb b/app/controllers/legacy_controller.rb index 37c8d188e..65f13d2ca 100644 --- a/app/controllers/legacy_controller.rb +++ b/app/controllers/legacy_controller.rb @@ -1,5 +1,6 @@ class LegacyController < ApplicationController before_filter :member_only, :only => [:create_post] + rescue_from PostSets::SearchError, :with => :error def posts @post_set = PostSets::Post.new(tag_query, params[:page], params[:limit]) @@ -30,6 +31,9 @@ class LegacyController < ApplicationController def unavailable render :text => "this resource is no longer available", :status => 410 end + + def error + end private def tag_query diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index c80564cb9..3fd329fce 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -2,9 +2,8 @@ class PostsController < ApplicationController before_filter :member_only, :except => [:show, :index] after_filter :save_recent_tags, :only => [:update] respond_to :html, :xml, :json - rescue_from PostSets::SearchError, :with => :search_error - rescue_from Post::SearchError, :with => :search_error - rescue_from Danbooru::Paginator::PaginationError, :with => :search_error + rescue_from PostSets::SearchError, :with => :rescue_exception + rescue_from Post::SearchError, :with => :rescue_exception def index @post_set = PostSets::Post.new(tag_query, params[:page], params[:limit]) @@ -55,16 +54,8 @@ class PostsController < ApplicationController format.js end end - - def error - end private - def search_error(exception) - @exception = exception - render :action => "error" - end - def tag_query params[:tags] || (params[:post] && params[:post][:tags]) end diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb index 5393ec608..a43511e07 100644 --- a/app/controllers/uploads_controller.rb +++ b/app/controllers/uploads_controller.rb @@ -1,6 +1,7 @@ class UploadsController < ApplicationController before_filter :member_only respond_to :html, :xml, :json, :js + rescue_from Upload::Error, :with => :rescue_exception def new @upload = Upload.new(:rating => "q") diff --git a/app/logical/cache.rb b/app/logical/cache.rb index d6d6107d3..4249bf8c4 100644 --- a/app/logical/cache.rb +++ b/app/logical/cache.rb @@ -38,7 +38,7 @@ class Cache def self.get(key, expiry = 0) begin start_time = Time.now - value = MEMCACHE.get key + value = MEMCACHE.get key.slice(0, 200) elapsed = Time.now - start_time ActiveRecord::Base.logger.debug('MemCache Get (%0.6f) %s' % [elapsed, key]) if value.nil? and block_given? then diff --git a/app/models/forum_post.rb b/app/models/forum_post.rb index a1db79ecc..4f141f9a8 100644 --- a/app/models/forum_post.rb +++ b/app/models/forum_post.rb @@ -110,7 +110,7 @@ class ForumPost < ActiveRecord::Base end def quoted_response - stripped_body = body.gsub(/\[quote\](?:.|\n|\r)+\[\/quote\][\n\r]*/m, "") + stripped_body = body.gsub(/\[quote\](?:.|\n|\r)+?\[\/quote\][\n\r]*/m, "") "[quote]\n#{creator_name} said:\n\n#{stripped_body}\n[/quote]\n\n" end diff --git a/app/models/upload.rb b/app/models/upload.rb index 52f138c47..919edcb42 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -16,7 +16,7 @@ class Upload < ActiveRecord::Base module ValidationMethods def uploader_is_not_limited if !uploader.can_upload? - raise "uploader has reached their daily limit" + raise Error.new("uploader has reached their daily limit") end end diff --git a/app/views/note_versions/index.html.erb b/app/views/note_versions/index.html.erb index 6e8727bbd..841f9f9ca 100644 --- a/app/views/note_versions/index.html.erb +++ b/app/views/note_versions/index.html.erb @@ -27,7 +27,7 @@ <%= note_version.updater_ip_addr %> <% end %> -