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, ActiveRecordNamedScope, ActiveRecordQuerying, ActiveRelationWhereNot, ActiveStorageMethods, 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
76
77
78
79
80
81
82
83
84
85
86
87
# 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 :custom_finder_methods
    CustomFinderMethods
  when :enumerable_collections
    EnumerableCollections
  when :active_storage_methods
    ActiveStorageMethods
  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
  when :shrine
    require('sorbet-rails/gem_plugins/shrine_plugin')
    ShrinePlugin
  when :elastic_search
    require('sorbet-rails/gem_plugins/elastic_search_plugin')
    ElasticSearchPlugin
  when :active_flag
    require('sorbet-rails/gem_plugins/active_flag_plugin')
    ActiveFlagPlugin
  when :paperclip
    require('sorbet-rails/gem_plugins/paperclip_plugin')
    PaperclipPlugin
  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