module Doorkeeper::Config::Option
Public Instance Methods
extended(base)
click to toggle source
# File lib/doorkeeper/config.rb, line 159 def extended(base) base.send(:private, :option) end
option(name, options = {})
click to toggle source
Defines configuration option
When you call option, it defines two methods. One method will take place in
the Config
class and the other method will take place in the
Builder
class.
The name
parameter will set both builder method and config
attribute. If the :as
option is defined, the builder method
will be the specified option while the config attribute will be the
name
parameter.
If you want to introduce another level of config DSL you can define
builder_class
parameter. Builder
should take a block as the initializer parameter and respond to function
build
that returns the value of the config attribute.
Options¶ ↑
- :
as
-
Set the builder method that goes inside
configure
block
- :
:default
-
The default value in case no option was set
Examples¶ ↑
option :name option :name, as: :set_name option :name, default: 'My Name' option :scopes builder_class: ScopesBuilder
# File lib/doorkeeper/config.rb, line 131 def option(name, options = {}) attribute = options[:as] || name attribute_builder = options[:builder_class] Builder.instance_eval do define_method name do |*args, &block| # TODO: is builder_class option being used? value = unless attribute_builder block ? block : args.first else attribute_builder.new(&block).build end @config.instance_variable_set(:"@#{attribute}", value) end end define_method attribute do |*args| if instance_variable_defined?(:"@#{attribute}") instance_variable_get(:"@#{attribute}") else options[:default] end end public attribute end