mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
Update README.md
Added some notes about how whitespace affects (disables) attempts at command, or context mapping.
This commit is contained in:
parent
456106e3d5
commit
7ab352495e
1 changed files with 3 additions and 0 deletions
|
@ -73,11 +73,14 @@ server 'example.org', roles: [:db, :workers]
|
|||
desc "Report Uptimes"
|
||||
task :uptime do
|
||||
on roles(:all) do |host|
|
||||
execute :any_command, "with args", :here, "and here"
|
||||
info "Host #{host} (#{host.roles.to_a.join(', ')}):\t#{capture(:uptime)}"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
**Note:** `execute()` has a subtle behaviour. When calling `within './directory' { execute(:bundle, :install) }` for example, the first argument to `execute()` is a *Stringish* with ***no whitespace***, this allows the command to pass through the [SSHKit::CommandMap](https://github.com/capistrano/sshkit#the-command-map) which enables a number of powerful features . When the first argument to `execute()` contains whitespace, for example `within './directory' { execute('bundle install') }` (or when using a heredoc), Capistrano, nor SSHKit can reliably predict how it should be shell escaped, and thus cannot perform any context, or command mapping, that means that the `within(){}` (as well as `with()`, `as()`, etc) have no effect. There have been a few attempts to resolve this, but we don't consider it a bug, although we acknowledge that it might be a little counter intuitive.
|
||||
|
||||
## Before / After
|
||||
|
||||
Where calling on the same task name, executed in order of inclusion
|
||||
|
|
Loading…
Reference in a new issue