class Codependent::InjectableBuilder
Attributes
dependencies[R]
id[R]
resolver[R]
state[R]
type[R]
validator[R]
Public Class Methods
new(id, type)
click to toggle source
# File lib/codependent/injectable_builder.rb, line 16 def initialize(id, type) @id = id @type = type @dependencies = [] @state = {} @skip_checks = false end
Public Instance Methods
build()
click to toggle source
# File lib/codependent/injectable_builder.rb, line 61 def build return unless @validator validate unless @skip_checks Injectable.new(@type, @dependencies, @state, @resolver) end
depends_on(*dependencies)
click to toggle source
# File lib/codependent/injectable_builder.rb, line 57 def depends_on(*dependencies) @dependencies.concat(dependencies) end
from_provider(&block)
click to toggle source
# File lib/codependent/injectable_builder.rb, line 32 def from_provider(&block) @state = { provider: block } @validator = Validators::ProviderValidator @resolver = Resolvers::ProviderResolver end
from_type(klass, additional_args = nil)
click to toggle source
# File lib/codependent/injectable_builder.rb, line 38 def from_type(klass, additional_args = nil) @state = { type: klass, additional_args: additional_args } @validator = Validators::ConstructorInjectionValidator @resolver = Resolvers::EagerTypeResolver end
from_value(value)
click to toggle source
# File lib/codependent/injectable_builder.rb, line 26 def from_value(value) @state = { value: value } @validator = Validators::ValueValidator @resolver = Resolvers::ValueResolver end
inject_setters()
click to toggle source
# File lib/codependent/injectable_builder.rb, line 48 def inject_setters @validator = Validators::SetterInjectionValidator @resolver = Resolvers::DeferredTypeResolver end
skip_checks()
click to toggle source
# File lib/codependent/injectable_builder.rb, line 53 def skip_checks @skip_checks = true end
Private Instance Methods
validate()
click to toggle source
# File lib/codependent/injectable_builder.rb, line 71 def validate @validator.new.(@type, @state, @dependencies) rescue Codependent::Errors::CodependentError => e raise "#{e.message} Check the configuration for #{id}." end