Module: ActionFigure

Extended by:
Configuration, FormatRegistry
Defined in:
lib/action_figure.rb,
lib/action_figure/core.rb,
lib/action_figure/version.rb,
lib/action_figure/formatter.rb,
lib/action_figure/configuration.rb,
lib/action_figure/testing/rspec.rb,
lib/action_figure/format_registry.rb,
lib/action_figure/formatters/jsend.rb,
lib/action_figure/testing/minitest.rb,
lib/action_figure/formatters/default.rb,
lib/action_figure/formatters/wrapped.rb,
lib/action_figure/formatters/json_api.rb,
lib/action_figure/formatters/json_api/resource.rb

Overview

ActionFigure provides explicit, purpose-driven operation classes for Rails controller actions.

Defined Under Namespace

Modules: Configuration, Core, FormatRegistry, Formatter, Formatters, Testing Classes: IndeterminateEntryPointError, InitializationNotSupportedError

Constant Summary collapse

IndeterminantEntryPointError =

Backwards-compatible alias for the misspelled constant shipped through 0.6.0. Remove in the next minor release after Unreleased.

IndeterminateEntryPointError
VERSION =
"0.6.2"

Class Method Summary collapse

Methods included from Configuration

configuration, configure

Methods included from FormatRegistry

fetch, register_formatter

Class Method Details

.[](format = configuration.format) ⇒ Object



35
36
37
# File 'lib/action_figure.rb', line 35

def self.[](format = configuration.format)
  format_modules.compute_if_absent(format) { build_format_module(format, fetch(format)) }
end

.clear_format_module_cache(name) ⇒ Object



52
53
54
# File 'lib/action_figure.rb', line 52

def self.clear_format_module_cache(name)
  format_modules.delete(name)
end

.included(base) ⇒ Object



39
40
41
# File 'lib/action_figure.rb', line 39

def self.included(base)
  base.include(self[])
end

.register_formatter(**formatters) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/action_figure.rb', line 43

def self.register_formatter(**formatters)
  formatters.each_value do |mod|
    missing = Formatter::REQUIRED_METHODS.reject { |m| mod.method_defined?(m) }
    raise ArgumentError, "#{mod} is missing formatter methods: #{missing.join(", ")}" if missing.any?
  end
  formatters.each_key { |name| clear_format_module_cache(name) }
  super
end