It would be necessary something like:
MyApp::Application.configuration.frameworks << [:controller]
MyApp::Application.load!
This way, we would not load Lotus::View
into memory, duplicate and configure it, since we wouldn't be using it.
diff --git a/lib/lotus/application.rb b/lib/lotus/application.rb | |
index e730b41..3b1d07c 100644 | |
--- a/lib/lotus/application.rb | |
+++ b/lib/lotus/application.rb | |
@@ -1,5 +1,4 @@ | |
require 'lotus/utils/class_attribute' | |
-require 'lotus/frameworks' | |
require 'lotus/configuration' | |
require 'lotus/loader' | |
require 'lotus/rendering_policy' | |
diff --git a/lib/lotus/frameworks.rb b/lib/lotus/frameworks.rb | |
index 1f12cc5..e69de29 100644 | |
--- a/lib/lotus/frameworks.rb | |
+++ b/lib/lotus/frameworks.rb | |
@@ -1,26 +0,0 @@ | |
-require 'lotus/router' | |
-require 'lotus/controller' | |
-require 'lotus/view' | |
- | |
-module Lotus | |
- module Frameworks | |
- module Action | |
- module Rack | |
- protected | |
- def response | |
- super << self | |
- end | |
- end | |
- end | |
- end | |
-end | |
- | |
-Lotus::Action::Rack.class_eval do | |
- prepend Lotus::Frameworks::Action::Rack | |
-end | |
- | |
-Lotus::Action.class_eval do | |
- def to_rendering | |
- exposures.merge(format: format) | |
- end | |
-end | |
diff --git a/lib/lotus/frameworks/controller.rb b/lib/lotus/frameworks/controller.rb | |
new file mode 100644 | |
index 0000000..66ef21e | |
--- /dev/null | |
+++ b/lib/lotus/frameworks/controller.rb | |
@@ -0,0 +1,24 @@ | |
+require 'lotus/controller' | |
+ | |
+module Lotus | |
+ module Frameworks | |
+ module Action | |
+ module Rack | |
+ protected | |
+ def response | |
+ super << self | |
+ end | |
+ end | |
+ end | |
+ end | |
+end | |
+ | |
+Lotus::Action::Rack.class_eval do | |
+ prepend Lotus::Frameworks::Action::Rack | |
+end | |
+ | |
+Lotus::Action.class_eval do | |
+ def to_rendering | |
+ exposures.merge(format: format) | |
+ end | |
+end | |
diff --git a/lib/lotus/frameworks/router.rb b/lib/lotus/frameworks/router.rb | |
new file mode 100644 | |
index 0000000..6037544 | |
--- /dev/null | |
+++ b/lib/lotus/frameworks/router.rb | |
@@ -0,0 +1 @@ | |
+require 'lotus/router' | |
diff --git a/lib/lotus/frameworks/view.rb b/lib/lotus/frameworks/view.rb | |
new file mode 100644 | |
index 0000000..816bc3a | |
--- /dev/null | |
+++ b/lib/lotus/frameworks/view.rb | |
@@ -0,0 +1 @@ | |
+require 'lotus/view' | |
diff --git a/lib/lotus/loader.rb b/lib/lotus/loader.rb | |
index e038d7f..6e1d04c 100644 | |
--- a/lib/lotus/loader.rb | |
+++ b/lib/lotus/loader.rb | |
@@ -23,7 +23,6 @@ module Lotus | |
load_configuration! | |
load_frameworks! | |
load_application! | |
- finalize! | |
end | |
end | |
@@ -38,27 +37,39 @@ module Lotus | |
config = configuration | |
unless application_module.const_defined?('Controller') | |
- controller = Lotus::Controller.duplicate(application_module) do | |
- handle_exceptions config.handle_exceptions | |
- default_format config.default_format | |
+ if configuration.frameworks.include?(:controller) | |
+ require "lotus/frameworks/controller" | |
- modules { include Lotus::Action::Cookies } if config.cookies | |
- end | |
+ controller = Lotus::Controller.duplicate(application_module) do | |
+ handle_exceptions config.handle_exceptions | |
+ default_format config.default_format | |
+ | |
+ modules { include Lotus::Action::Cookies } if config.cookies | |
+ end | |
- application_module.const_set('Controller', controller) | |
+ application_module.const_set('Controller', controller) | |
+ end | |
end | |
unless application_module.const_defined?('View') | |
- view = Lotus::View.duplicate(application_module) do | |
- root config.templates | |
- layout config.layout | |
- end | |
+ if configuration.frameworks.include?(:view) | |
+ require "lotus/frameworks/view" | |
+ | |
+ view = Lotus::View.duplicate(application_module) do | |
+ root config.templates | |
+ layout config.layout | |
+ end | |
- application_module.const_set('View', view) | |
+ application_module.const_set('View', view) | |
+ | |
+ finalize! | |
+ end | |
end | |
end | |
def load_application! | |
+ return if application.is_a?(Class) | |
+ | |
configuration.load_paths.load!(configuration.root) | |
load_rack! | |
end | |
@@ -70,7 +81,7 @@ module Lotus | |
end | |
def load_rack! | |
- return if application.is_a?(Class) | |
+ require "lotus/frameworks/router" | |
namespace = configuration.namespace || application_module |