summaryrefslogtreecommitdiff
path: root/config/initializers/container.rb
blob: 69da6d5956efcd0f4c49c26ec7a102a8882cb370 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class ConfigureContainerCommand
  def configure(container)
    container.register(:exif_parser) { |builder| ExifParser.new }
    container.register(:twitter_publisher) { |c| c.build(TwitterPublisher) }
    container.register(:product_api) { |c| AmazonAPI.new }.as_singleton
    if Rails.env.test?
      container.register(:blob_storage) { |builder| BlobStorage::Fake.new }
    else
      container.register(:blob_storage) { |builder| BlobStorage.new }
    end

    # repositories
    container.register(:cakes) { |builder| Creation::Repository.new }.as_singleton
    container.register(:photos) { |builder| Photo }
    container.register(:users) { |builder| User::Repository.new }.as_singleton
  end
end

if Rails.configuration.cache_classes
  container = Spank::Container.new
  ConfigureContainerCommand.new.configure(container)
  Spank::IOC.bind_to(container)
else
  ActiveSupport::Reloader.to_prepare do
    container = Spank::Container.new
    ConfigureContainerCommand.new.configure(container)
    Spank::IOC.bind_to(container)
  end
end