Class: ReactOnRailsPro::Configuration
- Inherits:
-
Object
- Object
- ReactOnRailsPro::Configuration
- Defined in:
- lib/react_on_rails_pro/configuration.rb
Overview
rubocop:disable Metrics/ClassLength
Constant Summary collapse
- DEFAULT_RENDERER_URL =
"http://localhost:3800"- DEFAULT_RENDERER_METHOD =
"ExecJS"- DEFAULT_RENDERER_FALLBACK_EXEC_JS =
true- DEFAULT_RENDERER_HTTP_POOL_SIZE =
10- DEFAULT_RENDERER_HTTP_POOL_TIMEOUT =
5- DEFAULT_RENDERER_HTTP_POOL_WARN_TIMEOUT =
0.25- DEFAULT_SSR_TIMEOUT =
5- DEFAULT_PRERENDER_CACHING =
false- DEFAULT_TRACING =
false- DEFAULT_DEPENDENCY_GLOBS =
[].freeze
- DEFAULT_EXCLUDED_DEPENDENCY_GLOBS =
[].freeze
- DEFAULT_REMOTE_BUNDLE_CACHE_ADAPTER =
nil- DEFAULT_RENDERER_REQUEST_RETRY_LIMIT =
5- DEFAULT_THROW_JS_ERRORS =
true- DEFAULT_RENDERING_RETURNS_PROMISES =
false- DEFAULT_PROFILE_SERVER_RENDERING_JS_CODE =
false- DEFAULT_RAISE_NON_SHELL_SERVER_RENDERING_ERRORS =
false- DEFAULT_ENABLE_RSC_SUPPORT =
false- DEFAULT_RSC_PAYLOAD_GENERATION_URL_PATH =
"rsc_payload/"- DEFAULT_RSC_BUNDLE_JS_FILE =
"rsc-bundle.js"- DEFAULT_REACT_CLIENT_MANIFEST_FILE =
"react-client-manifest.json"- DEFAULT_REACT_SERVER_CLIENT_MANIFEST_FILE =
"react-server-client-manifest.json"- DEFAULT_CONCURRENT_COMPONENT_STREAMING_BUFFER_SIZE =
64
Instance Attribute Summary collapse
-
#assets_to_copy ⇒ Object
Returns the value of attribute assets_to_copy.
-
#concurrent_component_streaming_buffer_size ⇒ Object
Returns the value of attribute concurrent_component_streaming_buffer_size.
-
#dependency_globs ⇒ Object
Returns the value of attribute dependency_globs.
-
#enable_rsc_support ⇒ Object
Returns the value of attribute enable_rsc_support.
-
#excluded_dependency_globs ⇒ Object
Returns the value of attribute excluded_dependency_globs.
-
#prerender_caching ⇒ Object
Returns the value of attribute prerender_caching.
-
#profile_server_rendering_js_code ⇒ Object
Returns the value of attribute profile_server_rendering_js_code.
-
#raise_non_shell_server_rendering_errors ⇒ Object
Returns the value of attribute raise_non_shell_server_rendering_errors.
-
#react_client_manifest_file ⇒ Object
Returns the value of attribute react_client_manifest_file.
-
#react_server_client_manifest_file ⇒ Object
Returns the value of attribute react_server_client_manifest_file.
-
#remote_bundle_cache_adapter ⇒ Object
Returns the value of attribute remote_bundle_cache_adapter.
-
#renderer_http_pool_size ⇒ Object
Returns the value of attribute renderer_http_pool_size.
-
#renderer_http_pool_timeout ⇒ Object
Returns the value of attribute renderer_http_pool_timeout.
-
#renderer_http_pool_warn_timeout ⇒ Object
Returns the value of attribute renderer_http_pool_warn_timeout.
-
#renderer_password ⇒ Object
Returns the value of attribute renderer_password.
-
#renderer_request_retry_limit ⇒ Object
Returns the value of attribute renderer_request_retry_limit.
-
#renderer_url ⇒ Object
Returns the value of attribute renderer_url.
-
#renderer_use_fallback_exec_js ⇒ Object
Returns the value of attribute renderer_use_fallback_exec_js.
-
#rendering_returns_promises ⇒ Object
Returns the value of attribute rendering_returns_promises.
-
#rsc_bundle_js_file ⇒ Object
Returns the value of attribute rsc_bundle_js_file.
-
#rsc_payload_generation_url_path ⇒ Object
Returns the value of attribute rsc_payload_generation_url_path.
-
#server_renderer ⇒ Object
Returns the value of attribute server_renderer.
-
#ssr_pre_hook_js ⇒ Object
Returns the value of attribute ssr_pre_hook_js.
-
#ssr_timeout ⇒ Object
Returns the value of attribute ssr_timeout.
-
#throw_js_errors ⇒ Object
Returns the value of attribute throw_js_errors.
-
#tracing ⇒ Object
Returns the value of attribute tracing.
Instance Method Summary collapse
- #check_react_on_rails_support_for_rsc ⇒ Object
-
#initialize(renderer_url: nil, renderer_password: nil, server_renderer: nil, renderer_use_fallback_exec_js: nil, prerender_caching: nil, renderer_http_pool_size: nil, renderer_http_pool_timeout: nil, renderer_http_pool_warn_timeout: nil, tracing: nil, dependency_globs: nil, excluded_dependency_globs: nil, rendering_returns_promises: nil, remote_bundle_cache_adapter: nil, ssr_pre_hook_js: nil, assets_to_copy: nil, renderer_request_retry_limit: nil, throw_js_errors: nil, ssr_timeout: nil, profile_server_rendering_js_code: nil, raise_non_shell_server_rendering_errors: nil, enable_rsc_support: nil, rsc_payload_generation_url_path: nil, rsc_bundle_js_file: nil, react_client_manifest_file: nil, react_server_client_manifest_file: nil, concurrent_component_streaming_buffer_size: DEFAULT_CONCURRENT_COMPONENT_STREAMING_BUFFER_SIZE) ⇒ Configuration
constructor
rubocop:disable Metrics/AbcSize.
- #node_renderer? ⇒ Boolean
- #setup_config_values ⇒ Object
- #setup_execjs_profiler_if_needed ⇒ Object
Constructor Details
#initialize(renderer_url: nil, renderer_password: nil, server_renderer: nil, renderer_use_fallback_exec_js: nil, prerender_caching: nil, renderer_http_pool_size: nil, renderer_http_pool_timeout: nil, renderer_http_pool_warn_timeout: nil, tracing: nil, dependency_globs: nil, excluded_dependency_globs: nil, rendering_returns_promises: nil, remote_bundle_cache_adapter: nil, ssr_pre_hook_js: nil, assets_to_copy: nil, renderer_request_retry_limit: nil, throw_js_errors: nil, ssr_timeout: nil, profile_server_rendering_js_code: nil, raise_non_shell_server_rendering_errors: nil, enable_rsc_support: nil, rsc_payload_generation_url_path: nil, rsc_bundle_js_file: nil, react_client_manifest_file: nil, react_server_client_manifest_file: nil, concurrent_component_streaming_buffer_size: DEFAULT_CONCURRENT_COMPONENT_STREAMING_BUFFER_SIZE) ⇒ Configuration
rubocop:disable Metrics/AbcSize
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/react_on_rails_pro/configuration.rb', line 94 def initialize(renderer_url: nil, renderer_password: nil, server_renderer: nil, # rubocop:disable Metrics/AbcSize renderer_use_fallback_exec_js: nil, prerender_caching: nil, renderer_http_pool_size: nil, renderer_http_pool_timeout: nil, renderer_http_pool_warn_timeout: nil, tracing: nil, dependency_globs: nil, excluded_dependency_globs: nil, rendering_returns_promises: nil, remote_bundle_cache_adapter: nil, ssr_pre_hook_js: nil, assets_to_copy: nil, renderer_request_retry_limit: nil, throw_js_errors: nil, ssr_timeout: nil, profile_server_rendering_js_code: nil, raise_non_shell_server_rendering_errors: nil, enable_rsc_support: nil, rsc_payload_generation_url_path: nil, rsc_bundle_js_file: nil, react_client_manifest_file: nil, react_server_client_manifest_file: nil, concurrent_component_streaming_buffer_size: DEFAULT_CONCURRENT_COMPONENT_STREAMING_BUFFER_SIZE) self.renderer_url = renderer_url self.renderer_password = renderer_password self.server_renderer = server_renderer self.renderer_use_fallback_exec_js = renderer_use_fallback_exec_js self.prerender_caching = prerender_caching self.renderer_http_pool_size = renderer_http_pool_size self.renderer_http_pool_timeout = renderer_http_pool_timeout self.renderer_http_pool_warn_timeout = renderer_http_pool_warn_timeout self.tracing = tracing self.rendering_returns_promises = server_renderer == "NodeRenderer" ? rendering_returns_promises : false self.dependency_globs = dependency_globs self.excluded_dependency_globs = excluded_dependency_globs self.remote_bundle_cache_adapter = remote_bundle_cache_adapter self.ssr_pre_hook_js = ssr_pre_hook_js self.assets_to_copy = assets_to_copy self.renderer_request_retry_limit = renderer_request_retry_limit self.throw_js_errors = throw_js_errors self.ssr_timeout = ssr_timeout self.profile_server_rendering_js_code = profile_server_rendering_js_code self.raise_non_shell_server_rendering_errors = raise_non_shell_server_rendering_errors self.enable_rsc_support = enable_rsc_support self.rsc_payload_generation_url_path = rsc_payload_generation_url_path self.rsc_bundle_js_file = rsc_bundle_js_file self.react_client_manifest_file = react_client_manifest_file self.react_server_client_manifest_file = react_server_client_manifest_file self.concurrent_component_streaming_buffer_size = concurrent_component_streaming_buffer_size end |
Instance Attribute Details
#assets_to_copy ⇒ Object
Returns the value of attribute assets_to_copy.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def assets_to_copy @assets_to_copy end |
#concurrent_component_streaming_buffer_size ⇒ Object
Returns the value of attribute concurrent_component_streaming_buffer_size.
75 76 77 |
# File 'lib/react_on_rails_pro/configuration.rb', line 75 def concurrent_component_streaming_buffer_size @concurrent_component_streaming_buffer_size end |
#dependency_globs ⇒ Object
Returns the value of attribute dependency_globs.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def dependency_globs @dependency_globs end |
#enable_rsc_support ⇒ Object
Returns the value of attribute enable_rsc_support.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def enable_rsc_support @enable_rsc_support end |
#excluded_dependency_globs ⇒ Object
Returns the value of attribute excluded_dependency_globs.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def excluded_dependency_globs @excluded_dependency_globs end |
#prerender_caching ⇒ Object
Returns the value of attribute prerender_caching.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def prerender_caching @prerender_caching end |
#profile_server_rendering_js_code ⇒ Object
Returns the value of attribute profile_server_rendering_js_code.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def profile_server_rendering_js_code @profile_server_rendering_js_code end |
#raise_non_shell_server_rendering_errors ⇒ Object
Returns the value of attribute raise_non_shell_server_rendering_errors.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def raise_non_shell_server_rendering_errors @raise_non_shell_server_rendering_errors end |
#react_client_manifest_file ⇒ Object
Returns the value of attribute react_client_manifest_file.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def react_client_manifest_file @react_client_manifest_file end |
#react_server_client_manifest_file ⇒ Object
Returns the value of attribute react_server_client_manifest_file.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def react_server_client_manifest_file @react_server_client_manifest_file end |
#remote_bundle_cache_adapter ⇒ Object
Returns the value of attribute remote_bundle_cache_adapter.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def remote_bundle_cache_adapter @remote_bundle_cache_adapter end |
#renderer_http_pool_size ⇒ Object
Returns the value of attribute renderer_http_pool_size.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def renderer_http_pool_size @renderer_http_pool_size end |
#renderer_http_pool_timeout ⇒ Object
Returns the value of attribute renderer_http_pool_timeout.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def renderer_http_pool_timeout @renderer_http_pool_timeout end |
#renderer_http_pool_warn_timeout ⇒ Object
Returns the value of attribute renderer_http_pool_warn_timeout.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def renderer_http_pool_warn_timeout @renderer_http_pool_warn_timeout end |
#renderer_password ⇒ Object
Returns the value of attribute renderer_password.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def renderer_password @renderer_password end |
#renderer_request_retry_limit ⇒ Object
Returns the value of attribute renderer_request_retry_limit.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def renderer_request_retry_limit @renderer_request_retry_limit end |
#renderer_url ⇒ Object
Returns the value of attribute renderer_url.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def renderer_url @renderer_url end |
#renderer_use_fallback_exec_js ⇒ Object
Returns the value of attribute renderer_use_fallback_exec_js.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def renderer_use_fallback_exec_js @renderer_use_fallback_exec_js end |
#rendering_returns_promises ⇒ Object
Returns the value of attribute rendering_returns_promises.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def rendering_returns_promises @rendering_returns_promises end |
#rsc_bundle_js_file ⇒ Object
Returns the value of attribute rsc_bundle_js_file.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def rsc_bundle_js_file @rsc_bundle_js_file end |
#rsc_payload_generation_url_path ⇒ Object
Returns the value of attribute rsc_payload_generation_url_path.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def rsc_payload_generation_url_path @rsc_payload_generation_url_path end |
#server_renderer ⇒ Object
Returns the value of attribute server_renderer.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def server_renderer @server_renderer end |
#ssr_pre_hook_js ⇒ Object
Returns the value of attribute ssr_pre_hook_js.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def ssr_pre_hook_js @ssr_pre_hook_js end |
#ssr_timeout ⇒ Object
Returns the value of attribute ssr_timeout.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def ssr_timeout @ssr_timeout end |
#throw_js_errors ⇒ Object
Returns the value of attribute throw_js_errors.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def throw_js_errors @throw_js_errors end |
#tracing ⇒ Object
Returns the value of attribute tracing.
65 66 67 |
# File 'lib/react_on_rails_pro/configuration.rb', line 65 def tracing @tracing end |
Instance Method Details
#check_react_on_rails_support_for_rsc ⇒ Object
144 145 146 147 148 149 150 151 152 153 |
# File 'lib/react_on_rails_pro/configuration.rb', line 144 def check_react_on_rails_support_for_rsc return unless enable_rsc_support return if ReactOnRails::Utils.respond_to?(:rsc_support_enabled?) raise ReactOnRailsPro::Error, <<~MSG React Server Components (RSC) support requires react_on_rails version 15.0.0 or higher. Please upgrade your react_on_rails gem to enable this feature. MSG end |
#node_renderer? ⇒ Boolean
183 184 185 |
# File 'lib/react_on_rails_pro/configuration.rb', line 183 def node_renderer? ReactOnRailsPro.configuration.server_renderer == "NodeRenderer" end |
#setup_config_values ⇒ Object
134 135 136 137 138 139 140 141 142 |
# File 'lib/react_on_rails_pro/configuration.rb', line 134 def setup_config_values configure_default_url_if_not_provided validate_url validate_remote_bundle_cache_adapter setup_renderer_password setup_assets_to_copy setup_execjs_profiler_if_needed check_react_on_rails_support_for_rsc end |
#setup_execjs_profiler_if_needed ⇒ Object
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/react_on_rails_pro/configuration.rb', line 155 def setup_execjs_profiler_if_needed return unless profile_server_rendering_js_code && server_renderer == "ExecJS" if ExecJS.runtime == ExecJS::Runtimes::Node ExecJS.runtime = ExecJS::ExternalRuntime.new( name: "Node.js (V8)", command: ["node --prof"], runner_path: "#{ExecJS.root}/support/node_runner.js", encoding: "UTF-8" ) elsif ExecJS.runtime == ExecJS::Runtimes::V8 ExecJS.runtime = ExecJS::ExternalRuntime.new( name: "V8", command: ["d8 --prof"], runner_path: "#{ExecJS.root}/support/v8_runner.js", encoding: "UTF-8" ) else current_runtime = ExecJS.runtime.name = <<~MSG You have set `profile_server_rendering_js_code` to true, but the current execjs runtime is #{current_runtime}. ExecJS profiler only supports Node.js (V8) or V8 runtimes. You can set the runtime by setting the `EXECJS_RUNTIME` environment variable to either `Node` or `V8`. MSG raise ReactOnRailsPro::Error, end end |