Module: Capistrano::Configuration::Variables
- Included in:
- Capistrano::Configuration
- Defined in:
- lib/capistrano/configuration/variables.rb
Instance Attribute Summary collapse
-
#variables ⇒ Object
readonly
The hash of variables that have been defined in this configuration instance.
Class Method Summary collapse
-
.included(base) ⇒ Object
:nodoc:.
Instance Method Summary collapse
- #[](variable) ⇒ Object
-
#exists?(variable) ⇒ Boolean
Returns true if the variable has been defined, and false otherwise.
-
#fetch(variable, *args) ⇒ Object
Access a named variable.
-
#method_missing_with_variables(sym, *args, &block) ⇒ Object
:nodoc:.
-
#reset!(variable) ⇒ Object
If the variable was originally a proc value, it will be reset to it’s original proc value.
-
#respond_to_with_variables?(sym, include_priv = false) ⇒ Boolean
:nodoc:.
-
#set(variable, *args, &block) ⇒ Object
(also: #[]=)
Set a variable to the given value.
-
#unset(variable) ⇒ Object
Removes any trace of the given variable.
Instance Attribute Details
#variables ⇒ Object (readonly)
The hash of variables that have been defined in this configuration instance.
17 18 19 |
# File 'lib/capistrano/configuration/variables.rb', line 17 def variables @variables end |
Class Method Details
.included(base) ⇒ Object
:nodoc:
6 7 8 9 10 11 12 13 |
# File 'lib/capistrano/configuration/variables.rb', line 6 def self.included(base) #:nodoc: %w(initialize respond_to? method_missing).each do |m| base_name = m[/^\w+/] punct = m[/\W+$/] base.send :alias_method, "#{base_name}_without_variables#{punct}", m base.send :alias_method, m, "#{base_name}_with_variables#{punct}" end end |
Instance Method Details
#[](variable) ⇒ Object
94 95 96 |
# File 'lib/capistrano/configuration/variables.rb', line 94 def [](variable) fetch(variable, nil) end |
#exists?(variable) ⇒ Boolean
Returns true if the variable has been defined, and false otherwise.
50 51 52 |
# File 'lib/capistrano/configuration/variables.rb', line 50 def exists?(variable) @variables.key?(variable.to_sym) end |
#fetch(variable, *args) ⇒ Object
Access a named variable. If the value of the variable responds_to? :call, #call will be invoked (without parameters) and the return value cached and returned.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/capistrano/configuration/variables.rb', line 72 def fetch(variable, *args) if !args.empty? && block_given? raise ArgumentError, "you must specify either a default value or a block, but not both" end sym = variable.to_sym protect(sym) do if !@variables.key?(sym) return args.first unless args.empty? return yield(variable) if block_given? raise IndexError, "`#{variable}' not found" end if @variables[sym].respond_to?(:call) @original_procs[sym] = @variables[sym] @variables[sym] = @variables[sym].call end end @variables[sym] end |
#method_missing_with_variables(sym, *args, &block) ⇒ Object
:nodoc:
118 119 120 121 122 123 124 |
# File 'lib/capistrano/configuration/variables.rb', line 118 def method_missing_with_variables(sym, *args, &block) #:nodoc: if args.length == 0 && block.nil? && @variables.has_key?(sym) self[sym] else method_missing_without_variables(sym, *args, &block) end end |
#reset!(variable) ⇒ Object
If the variable was originally a proc value, it will be reset to it’s original proc value. Otherwise, this method does nothing. It returns true if the variable was actually reset.
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/capistrano/configuration/variables.rb', line 57 def reset!(variable) sym = variable.to_sym protect(sym) do if @original_procs.key?(sym) @variables[sym] = @original_procs.delete(sym) true else false end end end |
#respond_to_with_variables?(sym, include_priv = false) ⇒ Boolean
:nodoc:
114 115 116 |
# File 'lib/capistrano/configuration/variables.rb', line 114 def respond_to_with_variables?(sym, include_priv=false) #:nodoc: @variables.has_key?(sym.to_sym) || respond_to_without_variables?(sym, include_priv) end |
#set(variable, *args, &block) ⇒ Object Also known as: []=
Set a variable to the given value.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/capistrano/configuration/variables.rb', line 20 def set(variable, *args, &block) if variable.to_s !~ /^[_a-z]/ raise ArgumentError, "invalid variable `#{variable}' (variables must begin with an underscore, or a lower-case letter)" end if !block_given? && args.empty? || block_given? && !args.empty? raise ArgumentError, "you must specify exactly one of either a value or a block" end if args.length > 1 raise ArgumentError, "wrong number of arguments (#{args.length} for 1)" end value = args.empty? ? block : args.first sym = variable.to_sym protect(sym) { @variables[sym] = value } end |
#unset(variable) ⇒ Object
Removes any trace of the given variable.
41 42 43 44 45 46 47 |
# File 'lib/capistrano/configuration/variables.rb', line 41 def unset(variable) sym = variable.to_sym protect(sym) do @original_procs.delete(sym) @variables.delete(sym) end end |