Class: Roleback::Configuration::Builder

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

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, &block) ⇒ Builder

Returns a new instance of Builder.



103
104
105
106
107
108
109
# File 'lib/roleback/configuration.rb', line 103

def initialize(options = {}, &block)
  @options = options
  @config = ::Roleback::Configuration.new(options)
  @parent = nil

  instance_eval(&block) if block_given?
end

Instance Method Details

#buildObject



111
112
113
# File 'lib/roleback/configuration.rb', line 111

def build
  @config
end

#role(name, options = {}, &block) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/roleback/configuration.rb', line 115

def role(name, options = {}, &block)
  roles = @config.instance_variable_get(:@roles) || {}

  raise ::Roleback::BadConfiguration, "Role #{name} already defined" if roles[name]

  validate_options!(options)

  parents = options[:inherits_from]

  role = ::Roleback::Definitions::Role.new(name, parents: parents)
  role.instance_eval(&block) if block_given?

  roles[name] = role
  @config.instance_variable_set(:@roles, roles)

  role
end

#validate_options!(options) ⇒ Object



133
134
135
# File 'lib/roleback/configuration.rb', line 133

def validate_options!(options)
  raise ::Roleback::BadConfiguration, "Invalid options" if options.keys.any? { |k| ![:inherits_from].include?(k) }
end