diff options
author | Teemu Matilainen <teemu.matilainen@iki.fi> | 2013-02-22 23:57:33 -0300 |
---|---|---|
committer | Bryan McLellan <btm@opscode.com> | 2013-04-11 13:33:53 -0700 |
commit | b1d50b3b86acf033f8ab8a479e4dea9fb0cd131a (patch) | |
tree | 098d665a86ccc5ecef519ec4454a2b86566d0a9a /lib/chef/knife.rb | |
parent | 12a344037de789623f71ae692b0f818fa6f677f9 (diff) | |
download | chef-b1d50b3b86acf033f8ab8a479e4dea9fb0cd131a.tar.gz |
[CHEF-3932] Support multiple calls of `Knife.deps`
If a Knife subcommand class were inheriting or including other classes
with lazy loading dependencies, a later call to `Knife.deps` overwrote
the earlier block. Fix it by collecting the blocks to an array.
Diffstat (limited to 'lib/chef/knife.rb')
-rw-r--r-- | lib/chef/knife.rb | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/chef/knife.rb b/lib/chef/knife.rb index 7812fd232f..74507a4319 100644 --- a/lib/chef/knife.rb +++ b/lib/chef/knife.rb @@ -201,12 +201,18 @@ class Chef subcommand_class || subcommand_not_found!(args) end + def self.dependency_loaders + @dependency_loaders ||= [] + end + def self.deps(&block) - @dependency_loader = block + dependency_loaders << block end def self.load_deps - @dependency_loader && @dependency_loader.call + dependency_loaders.each do |dep_loader| + dep_loader.call + end end private |