Class: RuboCop::Cop::Migration::ReservedWordMysql

Inherits:
Base
  • Object
show all
Includes:
Migration::CopConcerns::ColumnTypeMethod
Defined in:
lib/rubocop/cop/migration/reserved_word_mysql.rb

Overview

Avoid using MySQL reserved words as identifiers.

Examples:

# bad
# NOTE: `role` is a reserved word in MySQL.
add_column :users, :role, :string

# good
add_column :users, :some_other_good_name, :string

Constant Summary collapse

MSG =
'Avoid using MySQL reserved words as identifiers.'
PATH_TO_RESERVED_WORDS_FILE =
File.expand_path(
  '../../../../data/reserved_words_mysql.txt',
  __dir__
).freeze
RESTRICT_ON_SEND =
[
  :add_column,
  :add_index,
  :add_reference,
  :create_join_table,
  :create_table,
  :rename,
  :rename_column,
  :rename_index,
  :rename_table,
  *COLUMN_TYPE_METHOD_NAMES
].freeze

Constants included from Migration::CopConcerns::ColumnTypeMethod

Migration::CopConcerns::ColumnTypeMethod::COLUMN_TYPE_METHOD_NAMES

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.reserved_wordsArray<String>

Returns:

  • (Array<String>)


43
44
45
46
47
# File 'lib/rubocop/cop/migration/reserved_word_mysql.rb', line 43

def reserved_words
  @reserved_words ||= ::Set.new(
    ::File.read(PATH_TO_RESERVED_WORDS_FILE).split("\n")
  ).freeze
end

Instance Method Details

#on_send(node) ⇒ void

This method returns an undefined value.

Parameters:

  • node (RuboCop::AST::DefNode)


52
53
54
55
56
# File 'lib/rubocop/cop/migration/reserved_word_mysql.rb', line 52

def on_send(node)
  offended_identifier_nodes_from(node).each do |identifier_node|
    add_offense(identifier_node)
  end
end