class Ovto::App
Attributes
main_component[R]
An instance of YourApp::MainComponent (mainly for testing)
state[R]
Public Class Methods
middlewares()
click to toggle source
List of installed middleware classes
# File lib/ovto/app.rb, line 4 def self.middlewares @middlewares ||= [] end
new()
click to toggle source
# File lib/ovto/app.rb, line 18 def initialize app_state_class = self.class.const_get('State') # Inject middleware states app_state_class.item :_middlewares, default_proc: ->{ Ovto::Middleware.create_middleware_states_class(self.class.middlewares).new } @state = app_state_class.new @wired_action_set = nil @main_component = nil end
run(*args)
click to toggle source
Create an App
and start it
# File lib/ovto/app.rb, line 9 def self.run(*args) new.run(*args) end
use(middleware_class)
click to toggle source
Install a middleware
# File lib/ovto/app.rb, line 14 def self.use(middleware_class) self.middlewares.push(middleware_class) end
Public Instance Methods
_set_state(new_state)
click to toggle source
Internal use only
# File lib/ovto/app.rb, line 38 def _set_state(new_state) @state = new_state end
actions()
click to toggle source
# File lib/ovto/app.rb, line 33 def actions @wired_action_set.app_wired_actions end
run(*args)
click to toggle source
Start this app
# File lib/ovto/app.rb, line 43 def run(*args) Ovto.log_error{ _run(*args) } end
setup()
click to toggle source
Called when this app is started
# File lib/ovto/app.rb, line 48 def setup # override this if needed end
Private Instance Methods
_run(id: nil)
click to toggle source
Setup runtime and wired_actions
# File lib/ovto/app.rb, line 55 def _run(id: nil) runtime = Ovto::Runtime.new(self) actions = self.class.const_get('Actions').new @wired_action_set = WiredActionSet.new(self, actions, [], self.class.middlewares, runtime) actions.wired_actions = @wired_action_set.app_wired_actions @main_component = create_view(@wired_action_set) if id %x{ document.addEventListener('DOMContentLoaded', function(){ var container = document.getElementById(id); if (!container) { throw "Ovto::App#run: tag with id='" + id + "' was not found"; } #{start_application(runtime, `container`)} }); } else start_application(runtime, nil) end end
create_view(wired_action_set)
click to toggle source
Instantiate MyApp::MainComponent
# File lib/ovto/app.rb, line 77 def create_view(wired_action_set) begin main_component_class = self.class.const_get('MainComponent') rescue NameError => orig_ex begin self.class.const_get('View') rescue NameError raise orig_ex else raise "Since Ovto 0.3.0, View is renamed to MainComponent. Please rename "+ "#{self.class}::View to #{self.class}::MainComponent" end end return main_component_class.new(wired_action_set) end
start_application(runtime, container)
click to toggle source
# File lib/ovto/app.rb, line 93 def start_application(runtime, container) Ovto.log_error { runtime.run(@main_component, container) setup self.class.middlewares.each do |m| m._run_setup(@wired_action_set[m.name]) end } end