class GraphqlRails::Controller::Configuration
stores all graphql_rails contoller specific config
Constants
- LIB_REGEXP
Attributes
action_by_name[R]
controller[R]
hooks[R]
Public Class Methods
new(controller)
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 18 def initialize(controller) @controller = controller @hooks = { before: {}, after: {}, around: {} } @action_by_name = {} @action_default = nil end
Public Instance Methods
action(method_name) { |action_by_name| ... }
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 65 def action(method_name) action_name = method_name.to_s.underscore @action_by_name[action_name] ||= action_default.dup_with( name: action_name, controller: controller, defined_at: dynamic_source_location ) yield(@action_by_name[action_name]) if block_given? @action_by_name[action_name] end
action_config(method_name)
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 76 def action_config(method_name) action_name = method_name.to_s.underscore @action_by_name.fetch(action_name) { raise_invalid_config_error(action_name) } end
action_default() { |action_default| ... }
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 59 def action_default @action_default ||= ActionConfiguration.new(name: :default, controller: nil) yield(@action_default) if block_given? @action_default end
action_hooks_for(hook_type, action_name)
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 47 def action_hooks_for(hook_type, action_name) hooks[hook_type].values.select { |hook| hook.applicable_for?(action_name) } end
add_action_hook(hook_type, name = nil, **options, &block)
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 51 def add_action_hook(hook_type, name = nil, **options, &block) hook_name = name&.to_sym hook_key = hook_name || :"anonymous_#{block.hash}" hooks[hook_type][hook_key] = \ ActionHook.new(name: hook_name, **options, &block) end
dup_with(controller:)
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 41 def dup_with(controller:) dup.tap do |new_config| new_config.instance_variable_set(:@controller, controller) end end
initialize_copy(other)
click to toggle source
Calls superclass method
# File lib/graphql_rails/controller/configuration.rb, line 30 def initialize_copy(other) super @action_by_name = other.instance_variable_get(:@action_by_name).transform_values(&:dup) hooks_to_copy = other.instance_variable_get(:@hooks) @hooks = hooks_to_copy.each.with_object({}) do |(hook_type, type_hooks), new_hooks| new_hooks[hook_type] = type_hooks.transform_values(&:dup) end end
model(model = nil)
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 81 def model(model = nil) action_default.model(model) end
Private Instance Methods
dynamic_source_location()
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 89 def dynamic_source_location project_trace = \ caller .dup .drop_while { |path| !path.match?(LIB_REGEXP) } .drop_while { |path| path.match?(LIB_REGEXP) } project_trace.first end
raise_invalid_config_error(action_name)
click to toggle source
# File lib/graphql_rails/controller/configuration.rb, line 99 def raise_invalid_config_error(action_name) error_message = \ "Missing action configuration for #{controller}##{action_name}. " \ "Please define it with `action(:#{action_name})`." raise InvalidActionConfiguration, error_message end