Sha256: 469f5153156b53bcfa916ca0e5143819be9586f56a033c986df36dbc89b0baf0

Contents?: true

Size: 868 Bytes

Versions: 9

Compression:

Stored size: 868 Bytes

Contents

require 'dependency_injection/container'

c = DependencyInjection::Container.new
c.add_parameter('mailer.transport', 'sendmail')

class Mailer
  attr_accessor :transport

  def send_mail(message)
    puts "mail sent via #{transport}: #{message}"
  end
end

# 1 - Simple global parameter
c.register('mailer', 'Mailer').add_method_call('transport=', '%mailer.transport%')
c.get('mailer').send_mail('Hello World')
# => mail sent via send_mail: Hello World

# 2 - Complex global parameter
class NewsletterManager
  def initialize(mailer)
    @mailer = mailer
  end

  def send_mail(message)
    puts 'newsletter'
    @mailer.send_mail(message)
  end
end

c.add_parameter('my.mailer', '@mailer')
c.register('newsletter', 'NewsletterManager').add_argument('%my.mailer%')
c.get('newsletter').send_mail('Hello World')
# => newsletter
#    mail sent via send_mail: Hello World

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
dependency_injection-0.4.3 examples/global_container_parameter.rb
dependency_injection-0.4.2 examples/global_container_parameter.rb
dependency_injection-0.4.1 examples/global_container_parameter.rb
dependency_injection-0.4.0 examples/global_container_parameter.rb
dependency_injection-0.3.1 examples/global_container_parameter.rb
dependency_injection-0.3.0 examples/global_container_parameter.rb
dependency_injection-0.2.0 examples/global_container_parameter.rb
dependency_injection-0.1.1 examples/global_container_parameter.rb
dependency_injection-0.1.0 examples/global_container_parameter.rb