Sha256: 3dfa2e7649ef68bbbda208be4db3559456dd4621b78375836e76532995064b60

Contents?: true

Size: 1.32 KB

Versions: 13

Compression:

Stored size: 1.32 KB

Contents

require 'rails_best_practices/checks/check'

module RailsBestPractices
  module Checks
    # Check a controller file to make sure that model logic should not exist in controller, move it into a model.
    #
    # Implementation: check the count of method calling of a model, 
    # if it is more than defined called count, then it contains model logic.
    class MoveModelLogicIntoModelCheck < Check
      
      def interesting_nodes
        [:defn]
      end
      
      def interesting_files
        /_controller.rb$/
      end

      def initialize(options = {})
        super()
        @called_count = options['called_count'] || 4
      end

      def evaluate_start(node)
        @variables = {}
        node.recursive_children do |child|
          case child.node_type
          when :attrasgn, :call
            call_node(child)
          end
        end
        
        @variables.each do |variable, count|
          add_error "move model logic into model (#{variable.to_ruby} called_count > #{@called_count})" if count > @called_count
        end
        @variables = nil
      end

      private
      
      def call_node(node)
        variable = node.subject
        return if variable.nil? or ![:lvar, :ivar].include? node.subject.node_type
        @variables[variable] ||= 0
        @variables[variable] += 1
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rails_best_practices-0.2.13 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.12 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.11 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.10 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.9 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.8 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.6 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.5 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.4 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.3 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.2 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.1 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
rails_best_practices-0.2.0 lib/rails_best_practices/checks/move_model_logic_into_model_check.rb