mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
61 lines
1.6 KiB
Markdown
61 lines
1.6 KiB
Markdown
---
|
|
title: User Input
|
|
layout: default
|
|
---
|
|
|
|
User input can be required in a task or during configuration:
|
|
|
|
```ruby
|
|
# used in a configuration
|
|
ask(:database_name, "default_database_name")
|
|
|
|
# used in a task
|
|
desc "Ask about breakfast"
|
|
task :breakfast do
|
|
ask(:breakfast, "pancakes")
|
|
on roles(:all) do |h|
|
|
execute "echo \"$(whoami) wants #{fetch(:breakfast)} for breakfast!\""
|
|
end
|
|
end
|
|
```
|
|
|
|
When using `ask` to get user input, you can pass `echo: false` to prevent the
|
|
input from being displayed. This option should be used to ask the user for
|
|
passwords and other sensitive data during a deploy run.
|
|
|
|
```ruby
|
|
ask(:database_password, 'default_password', echo: false)
|
|
```
|
|
|
|
|
|
The symbol passed as a parameter will be printed as text for the user and the
|
|
input will be saved to this variable:
|
|
|
|
```ruby
|
|
ask(:database_encoding, 'UTF-8')
|
|
# Please enter :database_encoding (UTF-8):
|
|
|
|
fetch(:database_encoding)
|
|
# => contains the user input (or the default)
|
|
# once the above line got executed
|
|
```
|
|
|
|
|
|
You can use `ask` to set a server- or role-specific configuration variable.
|
|
|
|
```ruby
|
|
ask(:password, nil)
|
|
server 'example.com', user: 'ssh_user_name', port: 22, password: fetch(:password), roles: %w{web app db}
|
|
```
|
|
|
|
|
|
You can also show your own message by using `prompt` option:
|
|
|
|
```ruby
|
|
ask(:breakfast, "pancakes", prompt: "What's for breakfast?")
|
|
```
|
|
|
|
**Important!** `ask` will not prompt the user immediately. The question is
|
|
deferred until the first time `fetch` is used to obtain the setting. That means
|
|
you can `ask` for many variables, but only the variables used by your task(s)
|
|
will actually prompt the user for input.
|