# File lib/capistrano/configuration/variables.rb, line 94 def [](variable) fetch(variable, nil) end
Returns true if the variable has been defined, and false otherwise.
# File lib/capistrano/configuration/variables.rb, line 50 def exists?(variable) @variables.key?(variable.to_sym) end
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.
# 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
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.
# 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
Set a variable to the given value.
# 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
Generated with the Darkfish Rdoc Generator 2.