Commit 5b70fec2

mo khan <mo@mokhan.ca>
2014-06-17 04:48:01
attempt to reload container if rails reloader is enabled.
1 parent f401979
Changed files (1)
config
initializers
config/initializers/container.rb
@@ -1,21 +1,32 @@
-container = Spank::Container.new
-container.register(:configuration) { EnvironmentVariables.new }
+class ConfigureContainerCommand
+  def configure(container)
+    container.register(:configuration) { EnvironmentVariables.new }
+    container.register(:message_handler) { |builder| builder.build(PublishCakeToTwitter) }
+    container.register(:message_handler) { |builder| builder.build(ProcessPhoto) }
+    container.register(:queue) { |c| Delayed::Job }
+    container.register(:message_bus) { |c| c.build(MessageBus) }.as_singleton
+    container.register(:exif_parser) { |builder| ExifParser.new }
+    container.register(:twitter_publisher) { |c| c.build(TwitterPublisher) }.as_singleton
+    if Rails.env.test?
+      container.register(:blob_storage) { |builder| BlobStorage::Fake.new }
+    else
+      container.register(:blob_storage) { |builder| BlobStorage.new }
+    end
 
-container.register(:message_handler) { |builder| builder.build(PublishCakeToTwitter) }
-container.register(:message_handler) { |builder| builder.build(ProcessPhoto) }
+    # repositories
+    container.register(:cakes) { |builder| Creation }
+    container.register(:photos) { |builder| Photo }
+  end
+end
 
-container.register(:queue) { |c| Delayed::Job }
-container.register(:message_bus) { |c| c.build(MessageBus) }.as_singleton
-container.register(:exif_parser) { |builder| ExifParser.new }
-container.register(:twitter_publisher) { |c| c.build(TwitterPublisher) }.as_singleton
-if Rails.env.test?
-  container.register(:blob_storage) { |builder| BlobStorage::Fake.new }
+if Rails.configuration.cache_classes
+  container = Spank::Container.new
+  ConfigureContainerCommand.new.configure(container)
+  Spank::IOC.bind_to(container)
 else
-  container.register(:blob_storage) { |builder| BlobStorage.new }
+  ActionDispatch::Reloader.to_prepare do
+    container = Spank::Container.new
+    ConfigureContainerCommand.new.configure(container)
+    Spank::IOC.bind_to(container)
+  end
 end
-
-# repositories
-container.register(:cakes) { |builder| Creation }
-container.register(:photos) { |builder| Photo }
-
-Spank::IOC.bind_to(container)