Sha256: e945a94a7e79e1f99cc0c4f032e5dd79ef14db99aa74827f0973567dfd583da0

Contents?: true

Size: 1.49 KB

Versions: 8

Compression:

Stored size: 1.49 KB

Contents

module Capitate
  module CapExt
    module Variables

      def self.included(base) #:nodoc:
        base.send :alias_method, :fetch_without_capitate, :fetch
        base.send :alias_method, :fetch, :fetch_with_capitate
      end
    
      # Fetch (alias method chained) variable.
      # Displays usage message from recipe docs if variable not found.
      #
      # See capistrano fetch for usage info.
      #
      # Recipe docs are in lib/doc/the_namespace.yml
      #
      def fetch_with_capitate(variable, *args)
        begin
          fetch_without_capitate(variable, *args)
        rescue IndexError
          message = capitate.usage(variable)

          if message.blank?
            message = <<-EOS

            Please set :#{variable} variable in your Capfile or profile.

            EOS
          end
        
          raise IndexError, "\n#{message}"
        end        
      end
      
      # Fetch or set and return default.
      #
      # ==== Options
      # +variable+:: Variable to fetch
      # +default+:: Default value if not set
      # +args+:: ?
      #
      # ==== Examples
      #   fetch_or_default(:memcached_port, 11211) => 11211
      #   # Any calls to fetch(memcached_port) in the future will return this value 11211 (unless overriden)
      #
      def fetch_or_default(variable, default, *args)
        begin
          return fetch(variable, *args)
        rescue IndexError
          set variable, default
        end
        default
      end
    
    end
  end
  
end
    

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
capitate-0.2.2 lib/capitate/cap_ext/variables.rb
capitate-0.1.7 lib/capitate/cap_ext/variables.rb
capitate-0.2.1 lib/capitate/cap_ext/variables.rb
capitate-0.2.3 lib/capitate/cap_ext/variables.rb
capitate-0.1.9 lib/capitate/cap_ext/variables.rb
capitate-0.1.8 lib/capitate/cap_ext/variables.rb
capitate-0.2.5 lib/capitate/cap_ext/variables.rb
capitate-0.2.6 lib/capitate/cap_ext/variables.rb