Как функция блока в функции Capistrano fetch?Capistrano fetch с блоком
fetch(:release_path) { current_path }
Также его можно назвать дефолтом?
fetch(:release_path, 'default') { current_path }
Как функция блока в функции Capistrano fetch?Capistrano fetch с блоком
fetch(:release_path) { current_path }
Также его можно назвать дефолтом?
fetch(:release_path, 'default') { current_path }
Блок и второй аргумент используются для предоставления значений по умолчанию.
Например:
# If :some_var is not set, then the default is used
fetch(:some_var) { "default" }
=> "default"
fetch(:some_var, "default")
=> "default"
# Once :some_var is set, the defaults are ignored
set(:some_var, "value")
fetch(:some_var) { "default" }
=> "value"
fetch(:some_var, "default")
=> "value"
Вы никогда не должны указать как второй аргумент, и блок, в то же время. В этом случае аргумент будет проигнорирован, и блок будет использоваться.
# Don't do this, it is confusing
fetch(:another_var, "arg_default") { "block_default" }
=> "block_default"
Причина выбора одной формы над другой зависит от типа значения по умолчанию. Если значение по умолчанию жестко запрограммировано (например, буквальная строка в приведенных выше примерах), тогда форма аргумента имеет смысл. С другой стороны, если значением по умолчанию является вычисленное значение (т. Е. Вызов метода), то лучше использовать блок.
поведение по умолчанию, значение fetch
мимики Capistrano, что рубин встроенного Hash#fetch
, которая описана здесь: http://ruby-doc.org/core-2.4.0/Hash.html#method-i-fetch