Module: Scope
- Defined in:
- lib/capistrano/scope.rb
Constant Summary collapse
- @@servers =
Hash.new {|h,k| h[k] = {:ip_address => nil, :roles => [] } }
Instance Method Summary collapse
- #all(ns) ⇒ Object
-
#create_server_tasks(ns) ⇒ Object
Execution starts here.
- #create_task(name, pattern, ns) ⇒ Object
- #defined_roles(ns) ⇒ Object
- #defined_servers(ns) ⇒ Object
- #namespace_task(namespace_list, ns) ⇒ Object
- #role(role, server_name, options = {}) ⇒ Object
- #server(server_name, ip_address) ⇒ Object
- #task_list ⇒ Object
Instance Method Details
#all(ns) ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/capistrano/scope.rb', line 57 def all(ns) @@servers.each_value do |scope_server| scope_server[:roles].each do |role| ns.top.role(role[:name], scope_server[:ip_address], role[:options]) end end end |
#create_server_tasks(ns) ⇒ Object
Execution starts here.
51 52 53 54 55 |
# File 'lib/capistrano/scope.rb', line 51 def create_server_tasks(ns) @@servers.keys.each do |name| namespace_task name.split(':').reverse, ns end end |
#create_task(name, pattern, ns) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/capistrano/scope.rb', line 22 def create_task(name, pattern, ns) ns.task(name) do set :current_scope, true keys = @@servers.keys.grep(/^#{pattern}/) keys.each do |key| ip_address = @@servers[key][:ip_address] @@servers[key][:roles].each do |role| top.role(role[:name], ip_address, role[:options]) end end end end |
#defined_roles(ns) ⇒ Object
65 66 67 |
# File 'lib/capistrano/scope.rb', line 65 def defined_roles(ns) ns.top.roles.keys.collect {|r| r.to_s }.sort {|a,b| a <=> b } end |
#defined_servers(ns) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/capistrano/scope.rb', line 69 def defined_servers(ns) ip_to_name = @@servers.keys.inject({}) do |h,key| h[@@servers[key][:ip_address]] = key h end defined_servers = [] ns.top.roles.each_value do |defined_role| defined_role.servers.each do |server| unless defined_servers.include? ip_to_name[server.host] defined_servers << ip_to_name[server.host] end end end return defined_servers.sort end |
#namespace_task(namespace_list, ns) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/capistrano/scope.rb', line 36 def namespace_task(namespace_list, ns) name = namespace_list.pop pattern = "#{ns.fully_qualified_name}:#{name}".sub('@:','') if namespace_list.empty? create_task name, pattern, ns else ns.namespace name.to_sym do end create_task 'all', pattern, ns.namespaces[name.to_sym] namespace_task namespace_list, ns.namespaces[name.to_sym] end end |
#role(role, server_name, options = {}) ⇒ Object
14 15 16 |
# File 'lib/capistrano/scope.rb', line 14 def role(role, server_name, ={}) @@servers[server_name][:roles] << {:name => role, :options => } end |
#server(server_name, ip_address) ⇒ Object
18 19 20 |
# File 'lib/capistrano/scope.rb', line 18 def server(server_name, ip_address) @@servers[server_name][:ip_address] = ip_address end |
#task_list ⇒ Object
10 11 12 |
# File 'lib/capistrano/scope.rb', line 10 def task_list @@servers.keys.map {|key| "@:#{key}"} end |