Module | Capistrano::Configuration::Roles |
In: |
lib/capistrano/configuration/roles.rb
lib/capistrano/configuration/roles.rb |
Define a new role and its associated servers. You must specify at least one host for each role. Also, you can specify additional information (in the form of a Hash) which can be used to more uniquely specify the subset of servers specified by this specific role definition.
Usage:
role :db, "db1.example.com", "db2.example.com" role :db, "master.example.com", :primary => true role :app, "app1.example.com", "app2.example.com"
You can also encode the username and port number for each host in the server string, if needed:
role :web, "www@web1.example.com" role :file, "files.example.com:4144" role :db, "admin@db3.example.com:1234"
Lastly, username and port number may be passed as options, if that is preferred; note that the options apply to all servers defined in that call to "role":
role :web, "web2", "web3", :user => "www", :port => 2345
# File lib/capistrano/configuration/roles.rb, line 45 45: def role(which, *args, &block) 46: options = args.last.is_a?(Hash) ? args.pop : {} 47: which = which.to_sym 48: 49: # The roles Hash is defined so that unrecognized keys always auto-initialize 50: # to a new Role instance (see the assignment in the initialize_with_roles method, 51: # above). However, we explicitly assign here so that role declarations will 52: # vivify the role object even if there are no server arguments. (Otherwise, 53: # role(:app) won't actually instantiate a Role object for :app.) 54: roles[which] ||= Role.new 55: 56: roles[which].push(block, options) if block_given? 57: args.each { |host| roles[which] << ServerDefinition.new(host, options) } 58: end
Define a new role and its associated servers. You must specify at least one host for each role. Also, you can specify additional information (in the form of a Hash) which can be used to more uniquely specify the subset of servers specified by this specific role definition.
Usage:
role :db, "db1.example.com", "db2.example.com" role :db, "master.example.com", :primary => true role :app, "app1.example.com", "app2.example.com"
You can also encode the username and port number for each host in the server string, if needed:
role :web, "www@web1.example.com" role :file, "files.example.com:4144" role :db, "admin@db3.example.com:1234"
Lastly, username and port number may be passed as options, if that is preferred; note that the options apply to all servers defined in that call to "role":
role :web, "web2", "web3", :user => "www", :port => 2345
# File lib/capistrano/configuration/roles.rb, line 45 45: def role(which, *args, &block) 46: options = args.last.is_a?(Hash) ? args.pop : {} 47: which = which.to_sym 48: 49: # The roles Hash is defined so that unrecognized keys always auto-initialize 50: # to a new Role instance (see the assignment in the initialize_with_roles method, 51: # above). However, we explicitly assign here so that role declarations will 52: # vivify the role object even if there are no server arguments. (Otherwise, 53: # role(:app) won't actually instantiate a Role object for :app.) 54: roles[which] ||= Role.new 55: 56: roles[which].push(block, options) if block_given? 57: args.each { |host| roles[which] << ServerDefinition.new(host, options) } 58: end
An alternative way to associate servers with roles. If you have a server that participates in multiple roles, this can be a DRYer way to describe the relationships. Pass the host definition as the first parameter, and the roles as the remaining parameters:
server "master.example.com", :web, :app
# File lib/capistrano/configuration/roles.rb, line 66 66: def server(host, *roles) 67: options = roles.last.is_a?(Hash) ? roles.pop : {} 68: raise ArgumentError, "you must associate a server with at least one role" if roles.empty? 69: roles.each { |name| role(name, host, options) } 70: end
An alternative way to associate servers with roles. If you have a server that participates in multiple roles, this can be a DRYer way to describe the relationships. Pass the host definition as the first parameter, and the roles as the remaining parameters:
server "master.example.com", :web, :app
# File lib/capistrano/configuration/roles.rb, line 66 66: def server(host, *roles) 67: options = roles.last.is_a?(Hash) ? roles.pop : {} 68: raise ArgumentError, "you must associate a server with at least one role" if roles.empty? 69: roles.each { |name| role(name, host, options) } 70: end