Class: SolidObjects::ApplicationActorLoader
- Inherits:
-
Object
- Object
- SolidObjects::ApplicationActorLoader
- Defined in:
- lib/solid_objects/application_actor_loader.rb,
sig/generated/lib/solid_objects/application_actor_loader.rbs
Instance Attribute Summary collapse
-
#application ⇒ Object
readonly
Returns the value of attribute application.
-
#autoloader ⇒ Object
readonly
Returns the value of attribute autoloader.
Instance Method Summary collapse
- #actor_directories ⇒ Array[String]
- #call ⇒ void
- #current_actor_classes ⇒ Array[Class]
-
#initialize(application: Rails.application, autoloader: Rails.autoloaders.main) ⇒ ApplicationActorLoader
constructor
A new instance of ApplicationActorLoader.
- #install ⇒ void
Constructor Details
#initialize(application: Rails.application, autoloader: Rails.autoloaders.main) ⇒ ApplicationActorLoader
Returns a new instance of ApplicationActorLoader.
9 10 11 12 |
# File 'lib/solid_objects/application_actor_loader.rb', line 9 def initialize(application: Rails.application, autoloader: Rails.autoloaders.main) @application = application @autoloader = autoloader end |
Instance Attribute Details
#application ⇒ Object (readonly)
Returns the value of attribute application.
28 29 30 |
# File 'lib/solid_objects/application_actor_loader.rb', line 28 def application @application end |
#autoloader ⇒ Object (readonly)
Returns the value of attribute autoloader.
28 29 30 |
# File 'lib/solid_objects/application_actor_loader.rb', line 28 def autoloader @autoloader end |
Instance Method Details
#actor_directories ⇒ Array[String]
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/solid_objects/application_actor_loader.rb', line 31 def actor_directories configured_directories = application.paths["app/actors"]&.existent || [] conventional_directories = application.paths["app"].existent.select do |application_directory| File.basename(application_directory) == "actors" end managed_directories = autoloader.dirs.map { |directory| File.(directory) } (configured_directories + conventional_directories) .select { |directory| Dir.exist?(directory) } .map { |directory| File.(directory) } .select { |directory| managed_directories.include?(directory) } .uniq end |
#call ⇒ void
This method returns an undefined value.
15 16 17 18 |
# File 'lib/solid_objects/application_actor_loader.rb', line 15 def call actor_directories.each { |directory| autoloader.eager_load_dir(directory) } current_actor_classes.each(&:ensure_registered!) end |
#current_actor_classes ⇒ Array[Class]
46 47 48 49 50 51 |
# File 'lib/solid_objects/application_actor_loader.rb', line 46 def current_actor_classes Actor.descendants.select do |actor_class| actor_class.name && actor_class.name.safe_constantize.equal?(actor_class) end end |
#install ⇒ void
This method returns an undefined value.
21 22 23 24 |
# File 'lib/solid_objects/application_actor_loader.rb', line 21 def install application.reloader.to_prepare { call } call end |