Skip to content

Commit ff99f18

Browse files
committed
Allow to set default application options
1 parent 71dcce1 commit ff99f18

3 files changed

Lines changed: 15 additions & 3 deletions

File tree

lib/kan/abilities.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ def initialize(options = {})
4141
@options = options
4242
end
4343

44+
def update_options(new_options)
45+
self.class.new(new_options.merge(@options))
46+
end
47+
4448
def ability(name)
4549
self.class.ability_list[name.to_sym] || @options[:default_ability_block] || DEFAULT_ABILITY_BLOCK
4650
end

lib/kan/abilities_list.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module Kan
22
class AbilitiesList
3-
def initialize(name, list)
3+
def initialize(name, list, default_options = {})
44
@name = name
5-
@list = list
5+
@list = list.map { |ability| ability.update_options(default_options) }
66
end
77

88
def call(*payload)

lib/kan/application.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
module Kan
22
class Application
3+
def self.default_options(options = {})
4+
@default_options = Hash(options)
5+
end
6+
7+
def self.default_options
8+
@default_options || {}
9+
end
10+
311
def initialize(scopes)
412
@scopes = Hash(scopes)
513
end
@@ -10,7 +18,7 @@ def [](ability)
1018
abilities = Array(@scopes[scope.to_sym])
1119
raise_scope_error(scope) if abilities.empty?
1220

13-
AbilitiesList.new(ability_name, abilities)
21+
AbilitiesList.new(ability_name, abilities, self.class.default_options)
1422
end
1523

1624
private

0 commit comments

Comments
 (0)