Class: Capistrano::Configuration::Filter

### Home Classes Methods

### In Files

- lib/capistrano/configuration/filter.rb

### Parent

Object

### Methods

- ::new
- #filter

### Files

- Capfile
- Capfile

### Class/Module Index

Quicksearch

- Capistrano
- Capistrano::Application
- Capistrano::Configuration
- Capistrano::Configuration::Filter
- Capistrano::Configuration::Question
- Capistrano::Configuration::Server
- Capistrano::Configuration::Server::Properties
- Capistrano::Configuration::Servers
- Capistrano::DSL
- Capistrano::DSL::Env
- Capistrano::DSL::Paths
- Capistrano::DSL::Stages
- Capistrano::Git
- Capistrano::Git::DefaultStrategy
- Capistrano::Hg
- Capistrano::Hg::DefaultStrategy
- Capistrano::SCM
- Capistrano::Svn
- Capistrano::Svn::DefaultStrategy
- Capistrano::TaskEnhancements
- Capistrano::UploadTask
- Capistrano::VersionValidator
- Object

No matching classes.

# Capistrano::Configuration::Filter

### Public Class Methods

new(type, values = nil) click to toggle source

    # File lib/capistrano/configuration/filter.rb, line 6
    def initialize type, values = nil
      raise "Invalid filter type #{type}" unless [:host,:role].include? type
      av = Array(values).dup
      @mode = case
              when av.size == 0 then :none
              when av.include?(:all) then :all
              else type
              end
      @rex = case @mode
        when :host
          av.map!{|v| (v.is_a?(String) && v =~ /^(?<name>[-A-Za-z0-9.]+)(,\g<name>)*$/) ? v.split(',') : v }
          av.flatten!
          av.map! do |v|
            case v
            when Regexp then v
            else
              vs = v.to_s
              vs =~ /^[-A-Za-z0-9.]+$/ ? vs : Regexp.new(vs)
            end
          end
          Regexp.union av
        when :role
          av.map!{|v| v.is_a?(String) ? v.split(',') : v }
          av.flatten!
          av.map! do |v|
            case v
            when Regexp then v
            else
              vs = v.to_s
              vs =~ %{^/(.+)/$} ? Regexp.new($1) : %{^#{vs}$}
            end
          end
          Regexp.union av
        else
          nil
        end
    end

### Public Instance Methods

filter(servers) click to toggle source

    # File lib/capistrano/configuration/filter.rb, line 43
    def filter servers
      as = Array(servers)
      case @mode
      when :none then return []
      when :all  then return servers
      when :host
        as.select {|s| @rex.match s.hostname}
      when :role
        as.select {|s| s.roles.any? {|r| @rex.match r} }
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.