class RuboCop::Cop::PollEverywhere::NullableBoolean
Constants
- MSG
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/polleverywhere/nullable_boolean.rb, line 9 def on_send(node) if adding_boolean?(node) && nullable?(node) add_offense(node, location: :expression, message: MSG) end end
relevant_file?(file)
click to toggle source
Calls superclass method
# File lib/rubocop/cop/polleverywhere/nullable_boolean.rb, line 15 def relevant_file?(file) super && file =~ %r(/db/migrate/.+\.rb\z) end
Private Instance Methods
adding_boolean?(node)
click to toggle source
# File lib/rubocop/cop/polleverywhere/nullable_boolean.rb, line 21 def adding_boolean?(node) code_match = node.method_name == :boolean || node.source =~ /(add|change)_column.+boolean/mi code_match && !in_excluded_method?(node) end
in_excluded_method?(node)
click to toggle source
# File lib/rubocop/cop/polleverywhere/nullable_boolean.rb, line 27 def in_excluded_method?(node) node.each_ancestor(:def).any? do |parent_node| method_name, _args, _body = *parent_node method_name == :down end end
nullable?(node)
click to toggle source
# File lib/rubocop/cop/polleverywhere/nullable_boolean.rb, line 34 def nullable?(node) node.source !~ /(null:\s*false)|(:null\s*=>\s*false)|(NOT\s+NULL)/i end