Module: Hanami::Mailer::ViewIntegration Private

Included in:
Hanami::Mailer
Defined in:
lib/hanami/mailer/view_integration.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Integration module for Hanami::View support.

This module is included when Hanami::View is available, providing automatic view building and settings inheritance.

Since:

  • 3.0.0

Defined Under Namespace

Modules: ClassMethods, PrependedMethods Classes: DefaultViewBuilder

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 3.0.0



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/hanami/mailer/view_integration.rb', line 12

def self.included(base)
  base.class_eval do
    # Prepend the initializer module to wrap initialization
    prepend PrependedMethods

    # Add class-level methods, including the lazily-built, memoized default view
    extend ClassMethods

    # Whether to automatically build views from exposures
    # Set to false to disable automatic view integration behavior
    setting :integrate_view, default: true

    # The base class used when building the mailer's view. Defaults to Hanami::View, but
    # may be set to an already-configured view class (such as a view class within a Hanami
    # app), in which case the built view inherits that class's configuration — context,
    # parts, scopes, paths, helpers and so on.
    setting :view_class, default: Hanami::View

    # Copy all settings from Hanami::View to support default view integration.
    # This allows mailers to configure view-related settings (like layouts_dir,
    # default_format, inflector, etc.) without having to manually redefine them.
    existing_settings = config._settings.keys.to_set
    Hanami::View.config._settings.each do |setting_def|
      next if existing_settings.include?(setting_def.name)

      setting(
        setting_def.name,
        default: setting_def.default,
        constructor: setting_def.constructor,
        **setting_def.options
      )
    end
  end
end