Class: RuboCop::Cop::Legion::Framework::EagerSequelModel

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/legion/framework/eager_sequel_model.rb

Overview

Detects ‘class Foo < Sequel::Model(:table)` which introspects the database schema at require time and will crash if the DB is unavailable. Use a lazy `define_model` pattern instead.

Examples:

# bad
class Task < Sequel::Model(:tasks)
end

# good
def self.define_task_model(db)
  Class.new(Sequel::Model(db[:tasks]))
end

Constant Summary collapse

MSG =
'Sequel::Model(:table) introspects schema at require time. Use a lazy define_model pattern.'
SEVERITY =
:warning

Instance Method Summary collapse

Instance Method Details

#on_class(node) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/rubocop/cop/legion/framework/eager_sequel_model.rb', line 24

def on_class(node)
  superclass = node.parent_class
  return unless superclass
  return unless sequel_model_with_args?(superclass)

  add_offense(superclass, severity: SEVERITY)
end