Sha256: a820c02e7ff0ddd3d2e371103056db22abeb21f417952cd13fda1ea2ca963184

Contents?: true

Size: 1.81 KB

Versions: 1

Compression:

Stored size: 1.81 KB

Contents

# encoding: utf-8
require 'rails_best_practices/reviews/review'

module RailsBestPractices
  module Reviews
    class RemoveUnusedMethodsInControllersReview < Review
      include Klassable
      include Completeable
      include Callable
      include InheritedResourcesable

      interesting_nodes :class
      interesting_files CONTROLLER_FILES

      EXCEPT_METHODS = %w(rescue_action)
      INHERITED_RESOURCES_METHODS = %w(resource collection begin_of_association_chain build_resource)

      def initialize(options={})
        @controller_methods = Prepares.controller_methods
        @routes = Prepares.routes
        @inherited_resources = false
        @except_methods = EXCEPT_METHODS + options['except_methods']
      end

      # mark custom inherited_resources methods as used.
      def end_class(node)
        if @inherited_resources
          INHERITED_RESOURCES_METHODS.each do |method|
            call_method(method)
          end
        end
      end

      # get all unused methods at the end of review process.
      def on_complete
        @routes.each do |route|
          if "*" == route.action_name
            action_names = @controller_methods.get_methods(route.controller_name_with_namespaces).map(&:method_name)
            action_names.each { |action_name| call_method(action_name, route.controller_name_with_namespaces) }
          else
            call_method(route.action_name, route.controller_name_with_namespaces)
          end
        end
        @controller_methods.get_all_unused_methods.each do |method|
          if !@except_methods.include?(method.method_name)
            add_error "remove unused methods (#{method.class_name}##{method.method_name})", method.file, method.line
          end
        end
      end

      protected
        def methods
          @controller_methods
        end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_best_practices-1.4.0 lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb