Sha256: a2342cfe0ccbf09f8ab10eef501f953456778059c7401a3f3481cc69eab8ffe2

Contents?: true

Size: 959 Bytes

Versions: 3

Compression:

Stored size: 959 Bytes

Contents

require 'simplabs/excellent/checks/base'

module Simplabs

  module Excellent

    module Checks

      module Rails

        # This check reports +ActiveRecord+ models that define a custom +initialize+ method. Since +ActiveRecord+ does not always call +new+ to
        # create instances, these custom +initialize+ methods might not always be called, which makes the behavior of the application very hard to
        # understand.
        #
        # ==== Applies to
        #
        # * +ActiveRecord+ models
        class CustomInitializeMethodCheck < Base

          def initialize #:nodoc:
            super
            @interesting_contexts = [Parsing::ClassContext]
          end

          def evaluate(context) #:nodoc:
            add_warning(context, '{{class}} defines initialize method.', { :class => context.full_name }) if context.active_record_model? && !context.defines_initializer?
          end

        end

      end

    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
excellent-1.7.1 lib/simplabs/excellent/checks/rails/custom_initialize_method_check.rb
excellent-1.7.0 lib/simplabs/excellent/checks/rails/custom_initialize_method_check.rb
excellent-1.6.0 lib/simplabs/excellent/checks/rails/custom_initialize_method_check.rb