class Payload::RailsLoader
Loads dependencies from config/dependencies.rb in Rails applications.
Used by {Railtie} to provide a Rails dependency loader to {RackContainer}.
Public Class Methods
load()
click to toggle source
Load dependencies from outside a Rails request. @example
RailsLoader.load[:example_service]
@return [Container] dependencies from config/dependencies.rb
# File lib/payload/rails_loader.rb, line 19 def self.load new.load end
to_proc()
click to toggle source
@api private
# File lib/payload/rails_loader.rb, line 11 def self.to_proc lambda { load } end
Public Instance Methods
load()
click to toggle source
@api private
# File lib/payload/rails_loader.rb, line 24 def load namespace_containers.inject(root_container) do |target, source| target.import(source.exports) end end
Private Instance Methods
config_path()
click to toggle source
# File lib/payload/rails_loader.rb, line 54 def config_path Rails.root.join('config') end
load_from(path)
click to toggle source
# File lib/payload/rails_loader.rb, line 40 def load_from(path) container = MutableContainer.new(Container.new(DefinitionList.new)) container.instance_eval(IO.read(path), path) container end
namespace_config_paths()
click to toggle source
# File lib/payload/rails_loader.rb, line 50 def namespace_config_paths Dir.glob config_path.join('payload/*.rb').to_s end
namespace_containers()
click to toggle source
# File lib/payload/rails_loader.rb, line 32 def namespace_containers namespace_config_paths.map { |path| load_from(path) } end
root_config_path()
click to toggle source
# File lib/payload/rails_loader.rb, line 46 def root_config_path config_path.join('dependencies.rb').to_s end
root_container()
click to toggle source
# File lib/payload/rails_loader.rb, line 36 def root_container load_from(root_config_path).build end