Skip to content

Commit

Permalink
Allow to set default application options
Browse files Browse the repository at this point in the history
  • Loading branch information
davydovanton committed Jan 15, 2018
1 parent 71dcce1 commit ff99f18
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 3 deletions.
4 changes: 4 additions & 0 deletions lib/kan/abilities.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ def initialize(options = {})
@options = options
end

def update_options(new_options)
self.class.new(new_options.merge(@options))
end

def ability(name)
self.class.ability_list[name.to_sym] || @options[:default_ability_block] || DEFAULT_ABILITY_BLOCK
end
Expand Down
4 changes: 2 additions & 2 deletions lib/kan/abilities_list.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
module Kan
class AbilitiesList
def initialize(name, list)
def initialize(name, list, default_options = {})
@name = name
@list = list
@list = list.map { |ability| ability.update_options(default_options) }
end

def call(*payload)
Expand Down
10 changes: 9 additions & 1 deletion lib/kan/application.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
module Kan
class Application
def self.default_options(options = {})
@default_options = Hash(options)
end

def self.default_options
@default_options || {}
end

def initialize(scopes)
@scopes = Hash(scopes)
end
Expand All @@ -10,7 +18,7 @@ def [](ability)
abilities = Array(@scopes[scope.to_sym])
raise_scope_error(scope) if abilities.empty?

AbilitiesList.new(ability_name, abilities)
AbilitiesList.new(ability_name, abilities, self.class.default_options)
end

private
Expand Down

0 comments on commit ff99f18

Please sign in to comment.