Class: ReactEmailRails::Configuration
- Inherits:
-
Object
- Object
- ReactEmailRails::Configuration
- Defined in:
- lib/react_email_rails/configuration.rb
Constant Summary collapse
- BUNDLE_PATH =
"tmp/react-email-rails/emails.js"- BUILD_BIN =
"node_modules/.bin/react-email-rails-build"- CONFIG_BIN =
"node_modules/.bin/react-email-rails-config"- DEV_RENDER_BIN =
"node_modules/.bin/react-email-rails-dev"- DEFAULT_RENDER_TIMEOUT =
10- DEFAULT_RENDER_PROCESS_MAX_REQUESTS =
1_000- DEFAULT_LIVE_RELOAD_URL =
"http://localhost:5173"- RENDER_MODES =
{ subprocess: ReactEmailRails::RenderModes::Subprocess, persistent: ReactEmailRails::RenderModes::Persistent, }.freeze
- KEY_TRANSFORMS =
{ camel: ->(key) { key.to_s.camelize }, lower_camel: ->(key) { key.to_s.camelize(:lower) }, dash: ->(key) { key.to_s.underscore.dasherize }, snake: ->(key) { key.to_s.underscore }, none: ->(key) { key }, }.freeze
- DEFAULT_RENDER_COMMAND =
lambda do if Rails.env.development? [Rails.root.join(DEV_RENDER_BIN).to_s] else ["node", Rails.root.join(BUNDLE_PATH).to_s] end end
Instance Attribute Summary collapse
-
#component_path_resolver ⇒ Object
Returns the value of attribute component_path_resolver.
-
#deep_merge_shared_props ⇒ Object
Returns the value of attribute deep_merge_shared_props.
-
#on_render_error ⇒ Object
Returns the value of attribute on_render_error.
-
#render_mode ⇒ Object
Returns the value of attribute render_mode.
-
#render_options ⇒ Object
Returns the value of attribute render_options.
-
#render_timeout ⇒ Object
Returns the value of attribute render_timeout.
-
#transform_props ⇒ Object
Returns the value of attribute transform_props.
Class Method Summary collapse
Instance Method Summary collapse
- #render_process_max_requests=(value) ⇒ Object
- #resolve_live_reload_url ⇒ Object
- #resolve_render_options(context = nil) ⇒ Object
- #resolved_render_mode ⇒ Object
Instance Attribute Details
#component_path_resolver ⇒ Object
Returns the value of attribute component_path_resolver.
32 33 34 |
# File 'lib/react_email_rails/configuration.rb', line 32 def component_path_resolver @component_path_resolver end |
#deep_merge_shared_props ⇒ Object
Returns the value of attribute deep_merge_shared_props.
32 33 34 |
# File 'lib/react_email_rails/configuration.rb', line 32 def deep_merge_shared_props @deep_merge_shared_props end |
#on_render_error ⇒ Object
Returns the value of attribute on_render_error.
32 33 34 |
# File 'lib/react_email_rails/configuration.rb', line 32 def on_render_error @on_render_error end |
#render_mode ⇒ Object
Returns the value of attribute render_mode.
41 42 43 |
# File 'lib/react_email_rails/configuration.rb', line 41 def render_mode @render_mode end |
#render_options ⇒ Object
Returns the value of attribute render_options.
32 33 34 |
# File 'lib/react_email_rails/configuration.rb', line 32 def @render_options end |
#render_timeout ⇒ Object
Returns the value of attribute render_timeout.
41 42 43 |
# File 'lib/react_email_rails/configuration.rb', line 41 def render_timeout @render_timeout end |
#transform_props ⇒ Object
Returns the value of attribute transform_props.
32 33 34 |
# File 'lib/react_email_rails/configuration.rb', line 32 def transform_props @transform_props end |
Class Method Details
.default ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/react_email_rails/configuration.rb', line 48 def default new.tap do |config| config.component_path_resolver = ->(mailer:, action:) { "#{mailer}/#{action}" } config.render_mode = :subprocess config. = {} config.render_timeout = DEFAULT_RENDER_TIMEOUT config.render_process_max_requests = DEFAULT_RENDER_PROCESS_MAX_REQUESTS config.transform_props = :lower_camel config.on_render_error = nil config.deep_merge_shared_props = false config.live_reload_url = DEFAULT_LIVE_RELOAD_URL end end |
Instance Method Details
#render_process_max_requests=(value) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/react_email_rails/configuration.rb', line 83 def render_process_max_requests=(value) unless value.nil? || (value.is_a?(Integer) && value.positive?) raise(ArgumentError, "react-email-rails render_process_max_requests must be a positive integer or nil") end @render_process_max_requests = value end |
#resolve_live_reload_url ⇒ Object
63 64 65 66 67 |
# File 'lib/react_email_rails/configuration.rb', line 63 def resolve_live_reload_url return if live_reload_url.blank? live_reload_url.to_s.chomp("/") end |
#resolve_render_options(context = nil) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/react_email_rails/configuration.rb', line 99 def (context = nil) value = if .respond_to?(:call) && context context.instance_exec(&) elsif .respond_to?(:call) .call else end deep_transform_keys(value.as_json, KEY_TRANSFORMS.fetch(:lower_camel)) end |
#resolved_render_mode ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/react_email_rails/configuration.rb', line 91 def resolved_render_mode return render_mode unless render_mode.is_a?(Symbol) || render_mode.is_a?(String) RENDER_MODES.fetch(render_mode.to_sym) do raise(ArgumentError, "Unknown react-email-rails render mode: #{render_mode.inspect}") end end |