Class: ReactEmailRails::Configuration
- Inherits:
-
Object
- Object
- ReactEmailRails::Configuration
- Defined in:
- lib/react_email_rails/configuration.rb
Constant Summary collapse
- BUNDLE_PATH =
Must match OUT_DIR/BUNDLE_FILE in vite/src/index.ts (check_version_sync.rb asserts it).
"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- 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.
-
#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_render_options(context = nil) ⇒ Object
A callable render_options is instance_exec’d against ‘context` (the mailer) when given, so it can use per-mail helpers; otherwise it’s called or returned as-is.
- #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 |
#render_mode ⇒ Object
Returns the value of attribute render_mode.
39 40 41 |
# File 'lib/react_email_rails/configuration.rb', line 39 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.
39 40 41 |
# File 'lib/react_email_rails/configuration.rb', line 39 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
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/react_email_rails/configuration.rb', line 46 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 end end |
Instance Method Details
#render_process_max_requests=(value) ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/react_email_rails/configuration.rb', line 73 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_render_options(context = nil) ⇒ Object
A callable render_options is instance_exec’d against ‘context` (the mailer) when given, so it can use per-mail helpers; otherwise it’s called or returned as-is.
91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/react_email_rails/configuration.rb', line 91 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
81 82 83 84 85 86 87 |
# File 'lib/react_email_rails/configuration.rb', line 81 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 |