Sha256: a1ff26f1ce0e14ecad9dc07a2eece53ec128ced16587b6341500d1beed9bec66

Contents?: true

Size: 1.53 KB

Versions: 1

Compression:

Stored size: 1.53 KB

Contents

module RailsContrib
  module ActionController
    module Base

      def self.included(base)
        base.class_eval do
          if Rails.env == 'development'
            rescue_from Exception, :with => :error
          end
        end
      end

      protected
      
      def error(exception)
        logger.error exception.message
        exception.backtrace.each { |line| logger.error line }
        render :file => Rails.root.join('public', '500.html'), :status => 500, :layout => false
      end

      def not_found
        render :file => Rails.root.join('public', '404.html'), :status => 404, :layout => false
      end  
      
      def forbidden
        render :file => Rails.root.join('public', '422.html'), :status => 422, :layout => false
      end

      def redirect_with_flash(options, type, flash)
        args = [options]
        if flash.is_a? String
          flash = [flash]
        elsif flash.respond_to? :errors
          flash = flash.errors.full_messages
        end
        flash = { :flash => { type => flash } } 
        redirect_to *(args[0].is_a?(Hash) ? args[0].merge(flash) : args.push(flash))
      end

      def flash_errors(source)
        flash.now[:error] = [] unless flash.now[:error].is_a? Array
        if source.is_a? String
          flash.now[:error] << source
        elsif source.is_a? Array
          source.each { |error| flash.now[:error] << error }
        elsif source.respond_to? :errors 
          source.errors.full_messages.each { |error| flash.now[:error] << error }
        end
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_contrib-0.0.8 lib/rails_contrib/action_controller/base.rb