Skip to content

Instantly share code, notes, and snippets.

@arthurgeek
Created August 19, 2014 20:11
Show Gist options
  • Select an option

  • Save arthurgeek/9a0332a1225456dcdfb0 to your computer and use it in GitHub Desktop.

Select an option

Save arthurgeek/9a0332a1225456dcdfb0 to your computer and use it in GitHub Desktop.

Revisions

  1. arthurgeek created this gist Aug 19, 2014.
    156 changes: 156 additions & 0 deletions lotus.patch
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,156 @@
    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
    9 changes: 9 additions & 0 deletions readme.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    It would be necessary something like:


    ```ruby
    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.