From 863d860968baf0920861b35703fadc7706b04a9a Mon Sep 17 00:00:00 2001 From: Juan Ibiapina Date: Thu, 6 Mar 2014 15:04:59 -0300 Subject: [PATCH] Allow introspection of configuration values. Add a 'keys' method to capistrano/configuration. This method can be used to introspect on all currently set configuration keys to allow configuration dumps, for instance. --- CHANGELOG.md | 3 +++ lib/capistrano/configuration.rb | 4 ++++ spec/lib/capistrano/configuration_spec.rb | 13 +++++++++++++ 3 files changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d7b277f..924446bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ Reverse Chronological Order: https://github.com/capistrano/capistrano/compare/v3.2.0...HEAD +* Minor changes: + * Added `keys` method to Configuration to allow introspection of configuration options. (@juanibiapina) + ## `3.2.0` The changelog entries here are incomplete, because many authors choose not to diff --git a/lib/capistrano/configuration.rb b/lib/capistrano/configuration.rb index 4b1b6f4c..a5f978e9 100644 --- a/lib/capistrano/configuration.rb +++ b/lib/capistrano/configuration.rb @@ -36,6 +36,10 @@ module Capistrano return value end + def keys + config.keys + end + def role(name, hosts, options={}) if name == :all raise ArgumentError.new("#{name} reserved name for role. Please choose another name") diff --git a/spec/lib/capistrano/configuration_spec.rb b/spec/lib/capistrano/configuration_spec.rb index 026a53b4..42c37a2d 100644 --- a/spec/lib/capistrano/configuration_spec.rb +++ b/spec/lib/capistrano/configuration_spec.rb @@ -112,6 +112,19 @@ module Capistrano end end + describe 'keys' do + subject { config.keys } + + before do + config.set(:key1, :value1) + config.set(:key2, :value2) + end + + it 'returns all set keys' do + expect(subject).to match_array [:key1, :key2] + end + end + describe 'deleting' do before do config.set(:key, :value)