Class: RuboCop::Cop::Legion::HelperMigration::DirectData

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Defined in:
lib/rubocop/cop/legion/helper_migration/direct_data.rb

Overview

Detects direct calls to ‘Legion::Data::Connection.sequel`, `Legion::Data::Local.connected?`, `Legion::Data::Local.connection`, and `Legion::Data::Local.model` and suggests using the `data_connection`, `local_data_connected?`, `local_data_connection`, `local_data_model` helpers from `Legion::Data::Helper`.

Examples:

# bad
Legion::Data::Connection.sequel
Legion::Data::Local.connected?
Legion::Data::Local.connection
Legion::Data::Local.model(:traces)

# good
data_connection
local_data_connected?
local_data_connection
local_data_model(:traces)

Constant Summary collapse

MSG =
'Use `%<helper>s` instead of `%<original>s`. ' \
'Include `Legion::Data::Helper` via the data helper mixin.'
RESTRICT_ON_SEND =
%i[sequel connected? connection model].freeze
LOCAL_HELPER_MAP =
{
  connected?: 'local_data_connected?',
  connection: 'local_data_connection',
  model: 'local_data_model'
}.freeze

Instance Method Summary collapse

Instance Method Details

#data_connection_sequel?(node) ⇒ Object



34
35
36
# File 'lib/rubocop/cop/legion/helper_migration/direct_data.rb', line 34

def_node_matcher :data_connection_sequel?, <<~PATTERN
  (send (const (const (const nil? :Legion) :Data) :Connection) :sequel)
PATTERN

#data_local_call?(node) ⇒ Object



39
40
41
# File 'lib/rubocop/cop/legion/helper_migration/direct_data.rb', line 39

def_node_matcher :data_local_call?, <<~PATTERN
  (send (const (const (const nil? :Legion) :Data) :Local) {:connected? :connection :model} ...)
PATTERN

#on_send(node) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/rubocop/cop/legion/helper_migration/direct_data.rb', line 49

def on_send(node)
  if data_connection_sequel?(node)
    handle_connection_sequel(node)
  elsif data_local_call?(node)
    handle_local_call(node)
  end
end