module Isomorfeus
Attributes
component_cache_init_block[R]
current_user_sid[RW]
env[R]
initial_state_fetched[RW]
initialized[R]
server_side_rendering[RW]
ssr_hot_asset_url[RW]
ssr_response_status[RW]
top_component[RW]
zeitwerk[RW]
zeitwerk_lock[RW]
Public Class Methods
add_client_init_after_store_class_name(init_class_name)
click to toggle source
# File lib/isomorfeus/react/config.rb, line 32 def add_client_init_after_store_class_name(init_class_name) client_init_after_store_class_names << init_class_name end
add_client_init_class_name(init_class_name)
click to toggle source
# File lib/isomorfeus/react/config.rb, line 28 def add_client_init_class_name(init_class_name) client_init_class_names << init_class_name end
add_client_option(key, value = nil)
click to toggle source
# File lib/isomorfeus/react/config.rb, line 36 def add_client_option(key, value = nil) self.class.attr_accessor(key) self.send("#{key}=", value) end
cached_component_class(class_name)
click to toggle source
only used for SSR
# File lib/isomorfeus/react/config.rb, line 47 def cached_component_class(class_name) return cached_component_classes[class_name] if cached_component_classes.key?(class_name) cached_component_classes[class_name] = "::#{class_name}".constantize end
cached_component_classes()
click to toggle source
only used for SSR
# File lib/isomorfeus/react/config.rb, line 42 def cached_component_classes @cached_component_classes ||= {} end
component_cache_init(&block)
click to toggle source
# File lib/isomorfeus/react/config.rb, line 119 def component_cache_init(&block) @component_cache_init_block = block end
configuration(&block)
click to toggle source
# File lib/isomorfeus/react/config.rb, line 123 def configuration(&block) block.call(self) end
development?()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 71 def development? @development end
env=(env_string)
click to toggle source
# File lib/isomorfeus/react/config.rb, line 64 def env=(env_string) @env = env_string ? env_string : 'development' @development = (@env == 'development') ? true : false @production = (@env == 'production') ? true : false @test = (@env == 'test') ? true : false end
execute_init_after_store_classes()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 58 def execute_init_after_store_classes client_init_after_store_class_names.each do |constant| constant.constantize.send(:init) end end
execute_init_classes()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 52 def execute_init_classes client_init_class_names.each do |constant| constant.constantize.send(:init) end end
force_init!()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 19 def force_init! unless Isomorfeus.initial_state_fetched Isomorfeus.initial_state_fetched = true Redux::Store.preloaded_state = Isomorfeus.store.get_state end Isomorfeus.force_init_store! execute_init_classes end
force_render()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 88 def force_render begin if Isomorfeus.top_component ReactDOM.find_dom_node(Isomorfeus.top_component) if on_browser? || on_desktop? # if not mounted will raise if `typeof Opal.global.deepForceUpdate === 'undefined'` Isomorfeus.top_component.JS.forceUpdate() else `Opal.global.deepForceUpdate(#{Isomorfeus.top_component})` end end rescue Exception => e # TODO try mount first # if it fails `console.error("force_render failed'! Error: " + #{e.message} + "! Reloading page.")` `location.reload()` if on_browser? end nil end
init()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 12 def init return if initialized @initialized = true Isomorfeus.init_store execute_init_classes end
load_configuration(directory)
click to toggle source
# File lib/isomorfeus/react/config.rb, line 154 def load_configuration(directory) Dir.glob(File.join(directory, '*.rb')).sort.each do |file| require File.expand_path(file) end end
production?()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 75 def production? @production end
raise_error(error_class: nil, message: nil, stack: nil)
click to toggle source
# File lib/isomorfeus/react/config.rb, line 163 def raise_error(error_class: nil, message: nil, stack: nil) error_class = RuntimeError unless error_class execution_environment = if on_browser? then 'on Browser' elsif on_ssr? then 'in Server Side Rendering' elsif on_server? then 'on Server' elsif on_mobile? then 'on Mobile' elsif on_database? then 'on Database' else 'on Client' end error = error_class.new("Isomorfeus in #{env} #{execution_environment}:\n#{message}") error.set_backtrace(stack) if stack if Isomorfeus.development? if RUBY_ENGINE == 'opal' ecn = error_class ? error_class.name : '' m = message ? message : '' s = stack ? stack : '' `console.error(ecn, m, s)` else STDERR.puts "#{ecn}: #{m}\n #{s}" end end raise error end
ssr_contexts()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 146 def ssr_contexts @ssr_contexts ||= {} end
start_app!()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 83 def start_app! Isomorfeus.zeitwerk.setup Isomorfeus::TopLevel.mount! end
test?()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 79 def test? @test end
version()
click to toggle source
# File lib/isomorfeus/react/config.rb, line 150 def version Isomorfeus::VERSION end