Class: InertiaRails::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/inertia_rails/configuration.rb

Constant Summary collapse

DEFAULTS =
{
  # Whether to combine hashes with the same keys instead of replacing them.
  deep_merge_shared_data: false,

  # Overrides Rails default rendering behavior to render using Inertia by default.
  default_render: false,

  # Allows the user to hook into the default rendering behavior and change it to fit their needs
  component_path_resolver: ->(path:, action:) { "#{path}/#{action}" },

  # DEPRECATED: Let Rails decide which layout should be used based on the
  # controller configuration.
  layout: true,

  # Whether to encrypt the history state in the client.
  encrypt_history: false,

  # SSR options.
  ssr_enabled: false,
  ssr_url: 'http://localhost:13714',

  # Used to detect version drift between server and client.
  version: nil,

  # Allows configuring the base controller for StaticController
  parent_controller: '::ApplicationController',
}.freeze
OPTION_NAMES =
DEFAULTS.keys.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(controller: nil, **attrs) ⇒ Configuration

Returns a new instance of Configuration.

Raises:

  • (ArgumentError)


55
56
57
58
59
60
61
62
# File 'lib/inertia_rails/configuration.rb', line 55

def initialize(controller: nil, **attrs)
  @controller = controller
  @options = attrs.extract!(*OPTION_NAMES)

  return if attrs.empty?

  raise ArgumentError, "Unknown options for #{self.class}: #{attrs.keys}"
end

Class Method Details

.defaultObject



36
37
38
# File 'lib/inertia_rails/configuration.rb', line 36

def default
  new(**DEFAULTS, **env_options)
end

Instance Method Details

#bind_controller(controller) ⇒ Object



64
65
66
# File 'lib/inertia_rails/configuration.rb', line 64

def bind_controller(controller)
  Configuration.new(**@options, controller: controller)
end

#component_path_resolver(path:, action:) ⇒ Object



88
89
90
# File 'lib/inertia_rails/configuration.rb', line 88

def component_path_resolver(path:, action:)
  @options[:component_path_resolver].call(path: path, action: action)
end

#freezeObject



68
69
70
71
# File 'lib/inertia_rails/configuration.rb', line 68

def freeze
  @options.freeze
  super
end

#merge(config) ⇒ Object



78
79
80
# File 'lib/inertia_rails/configuration.rb', line 78

def merge(config)
  Configuration.new(**@options, **config.options)
end

#merge!(config) ⇒ Object



73
74
75
76
# File 'lib/inertia_rails/configuration.rb', line 73

def merge!(config)
  @options.merge!(config.options)
  self
end

#with_defaults(config) ⇒ Object

Internal: Finalizes the configuration for a specific controller.



83
84
85
86
# File 'lib/inertia_rails/configuration.rb', line 83

def with_defaults(config)
  @options = config.options.merge(@options)
  freeze
end