Module: Capitate::CapExt::Connections

Included in:
Capistrano::Configuration
Defined in:
lib/capitate/cap_ext/connections.rb

Instance Method Summary collapse

Instance Method Details

#clear_sessionsObject

Close all open sessions, and will force user to re-login.



66
67
68
69
70
71
72
73
# File 'lib/capitate/cap_ext/connections.rb', line 66

def clear_sessions    
  sessions.each do |key, session|
    logger.info "Closing: #{key}"
    session.close
  end    
  sessions.clear    
  reset_password
end

#reset_passwordObject

Reset the password. Display the current user that is asking for the password.



77
78
79
80
81
# File 'lib/capitate/cap_ext/connections.rb', line 77

def reset_password
  set :password, Proc.new {
    Capistrano::CLI.password_prompt("Password (for user: #{user}): ")
  }  
end

#reset_userObject

Reset to the old user. Takes care of invalidating current connections. Will force a re-login.

Examples

# User is "root"
set_user("nginx")
# Do something as user nginx
reset_user
# User is now root


36
37
38
39
40
41
# File 'lib/capitate/cap_ext/connections.rb', line 36

def reset_user
  return unless exists?(:previous_user)
  set :user, fetch(:previous_user)
  unset :previous_user
  clear_sessions
end

#set_user(new_user) ⇒ Object

Set the user to something new (but save the old user; reset_user will set it back). Takes care of invalidating current connections. Will force a re-login.

Options

new_user

User to become

Examples

set_user("nginx")
# Do something as user nginx


16
17
18
19
20
21
22
23
24
# File 'lib/capitate/cap_ext/connections.rb', line 16

def set_user(new_user)
  previous_user = fetch(:user)
    
  return if previous_user == new_user
  set :previous_user, previous_user
    
  set :user, new_user
  clear_sessions
end

#with_user(new_user, &block) ⇒ Object

Perform action as a different user. Yields the previous user to the block.

Options

new_user

User to become

Examples

new_user("nginx") do |old_user|
  # Do something as user nginx
end
# Now as user old_user


54
55
56
57
58
59
60
61
62
63
# File 'lib/capitate/cap_ext/connections.rb', line 54

def with_user(new_user, &block)
  begin
    set_user(new_user)
    yield exists?(:previous_user) ? fetch(:previous_user) : nil
  ensure
    reset_user
  end
    
  clear_sessions
end