master
 1class ConfigureContainerCommand
 2  def configure(container)
 3    container.register(:exif_parser) { |builder| ExifParser.new }
 4    container.register(:twitter_publisher) { |c| c.build(TwitterPublisher) }
 5    container.register(:product_api) { |c| AmazonAPI.new }.as_singleton
 6    if Rails.env.test?
 7      container.register(:blob_storage) { |builder| BlobStorage::Fake.new }
 8    else
 9      container.register(:blob_storage) { |builder| BlobStorage.new }
10    end
11
12    # repositories
13    container.register(:cakes) { |builder| Creation::Repository.new }.as_singleton
14    container.register(:photos) { |builder| Photo }
15    container.register(:users) { |builder| User::Repository.new }.as_singleton
16  end
17end
18
19if Rails.configuration.cache_classes
20  container = Spank::Container.new
21  ConfigureContainerCommand.new.configure(container)
22  Spank::IOC.bind_to(container)
23else
24  ActiveSupport::Reloader.to_prepare do
25    container = Spank::Container.new
26    ConfigureContainerCommand.new.configure(container)
27    Spank::IOC.bind_to(container)
28  end
29end