Как включить общую задачу в другую роль и как определить переменную для общих задач [duplicate]

Как говорили другие, это новый синтаксис для создания функций.

Однако этот вид функций отличается от обычных:

  • Они связывают this стоимость. Как объяснено , spec , An ArrowFunction не определяет локальные привязки для arguments, super, this или new.target. Любая ссылка на arguments, super, this или new.target в ArrowFunction должна быть разрешена к привязке в лексически закрывающей среде. Обычно это будет функциональная среда сразу входящей функции. Хотя функция ArrowFunction может содержать ссылки на super, функциональный объект, созданный на шаге 4, не превращается в метод, выполняя MakeMethod . Функция ArrowFunction , которая ссылается на super, всегда содержится внутри функции [ Arrow [], а необходимое для реализации super доступное через область который захватывается функциональным объектом ArrowFunction .
  • Они неконструкторы. Это означает, что у них нет внутреннего метода [[Construct]] и, следовательно, он не может быть создан, например.
    var f = a => a;
    f(123);  // 123
    new f(); // TypeError: f is not a constructor
    

7
задан ydaetskcoR 15 December 2015 в 14:42
поделиться

2 ответа

У вас есть два разумных подхода, которые вы можете попробовать здесь, чтобы уменьшить повторение.

У вас может быть отдельный каталог shared-files, который будет находиться в качестве родного брата в ваших папках ролей следующим образом:

play.yml
roles/
  web/
    tasks/
    files/
      other-multiple-files
  role-2/
    tasks/
    files/
      other-multiple-files
  role-3/
    tasks/
  role-4/
    tasks/
  shared-files/
    common-1
    common-2

Затем вы должны ссылаться на это в задачах с относительным расположением файлов, из которых будет папка role / files:

- name: copy common-1
  copy:
    src: ../../common-1
    dest: /path/to/dest/common-1

- name: copy role specific file
    src: other-multiple-files
    dest: /path/to/dest/other-multiple-files

Или, альтернативно, использовать относительный путь к папке , вы могли бы символизировать такие вещи следующим образом:

play.yml
roles/
  web/
    tasks/
    files/
      common-1 -> ../../common-1
      common-2 -> ../../common-2
      other-multiple-files
  role-2/
    tasks/
    files/
      common-1 -> ../../common-1
      common-2 -> ../../common-2
      other-multiple-files
  role-3/
    tasks/
    files/
      common-2 -> ../../common-2
  role-4/
    tasks/
    files/
      common-1 -> ../../common-1
  shared-files/
    common-1
    common-2

И вы можете ссылаться на файл так, как если бы он был в каталоге role / files напрямую:

- name: copy common-1
  copy:
    src: common-1
    dest: /path/to/dest/common-1

- name: copy role specific file
    src: other-multiple-files
    dest: /path/to/dest/other-multiple-files
13
ответ дан ydaetskcoR 17 August 2018 в 19:28
поделиться
  • 1
    Мне очень понравился символический подход ссылок, он сделает роли свободными от путей, и путь будет установлен только один раз в символической ссылке. – Nasr 15 December 2015 в 15:18
  • 2
    Я использую символические ссылки в своих ролях, чтобы обмениваться файлами, шаблонами и т. Д. Среди них. git отлично справляется с символическими ссылками, поэтому относительные символические ссылки между различными файлами & amp; шаблоны каталогов это кусок пирога. – Bruce P 15 December 2015 в 16:00

Мое решение состояло в том, чтобы создавать роли для общего материала и добавлять их в зависимости.

Например, ваша игра будет выглядеть так

play.yml
roles/
  common-1/
    files/
      common-1
  common-2/
    files/
      common-2
  web/
    meta/
      common-1
      common-2
    tasks/
    files/
      other-multiple-files
  role-2/
    meta/
      common-1
      common-2
    tasks/
    files/
      other-multiple-files
  role-3/
    meta/
      common-2
    tasks/
  role-4/
    meta/
      common-1
    tasks/

, поэтому roles/common-1 и roles/common-2 - это роли, которые просто разворачивают файлы, и все роли, которые в них нуждаются, имеют в качестве зависимостей папку meta/.

8
ответ дан user2599522 17 August 2018 в 19:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: