Module: SorbetRails::ModelPlugins

Extended by:
T::Sig
Includes:
Kernel
Included in:
ModelRbiFormatter
Defined in:
lib/sorbet-rails/model_plugins/base.rb,
lib/sorbet-rails/model_plugins/plugins.rb

Defined Under Namespace

Classes: ActiveRecordAssoc, ActiveRecordAttribute, ActiveRecordEnum, ActiveRecordFinderMethods, ActiveRecordNamedScope, ActiveRecordQuerying, ActiveRelationWhereNot, Base, CustomFinderMethods, EnumerableCollections, UnrecognizedPluginName

Constant Summary collapse

@@plugins =
T.let([], T::Array[T.class_of(Base)])

Instance Method Summary collapse

Instance Method Details

#get_plugin_by_name(plugin_name) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/sorbet-rails/model_plugins/plugins.rb', line 40

def get_plugin_by_name(plugin_name)
  case plugin_name
  when :active_record_enum
    ActiveRecordEnum
  when :active_record_named_scope
    ActiveRecordNamedScope
  when :active_record_querying
    ActiveRecordQuerying
  when :active_relation_where_not
    ActiveRelationWhereNot
  when :active_record_attribute
    ActiveRecordAttribute
  when :active_record_assoc
    ActiveRecordAssoc
  when :active_record_finder_methods
    ActiveRecordFinderMethods
  when :custom_finder_methods
    CustomFinderMethods
  when :enumerable_collections
    EnumerableCollections
  when :kaminari
    require('sorbet-rails/gem_plugins/kaminari_plugin')
    KaminariPlugin
  when :pg_search
    require('sorbet-rails/gem_plugins/pg_search_plugin')
    PgSearchPlugin
  when :friendly_id
    require('sorbet-rails/gem_plugins/friendly_id_plugin')
    FriendlyIdPlugin
  else
    raise UnrecognizedPluginName.new(
      "Unrecognized plugin with name: #{plugin_name}. Please check available plugins in the
      documentation".squish!
    )
  end
end

#get_pluginsObject



30
31
32
# File 'lib/sorbet-rails/model_plugins/plugins.rb', line 30

def get_plugins
  @@plugins
end

#register_plugin(plugin) ⇒ Object



20
21
22
# File 'lib/sorbet-rails/model_plugins/plugins.rb', line 20

def register_plugin(plugin)
  @@plugins.push(plugin) unless @@plugins.include?(plugin)
end

#register_plugin_by_name(plugin_name) ⇒ Object



35
36
37
# File 'lib/sorbet-rails/model_plugins/plugins.rb', line 35

def register_plugin_by_name(plugin_name)
  register_plugin(get_plugin_by_name(plugin_name))
end

#set_plugins(plugins) ⇒ Object



25
26
27
# File 'lib/sorbet-rails/model_plugins/plugins.rb', line 25

def set_plugins(plugins)
  @@plugins = plugins
end