Виключити конфігурацію з імпорту / експорту


16

Я думав, що це простий випадок використання нової системи управління конфігурацією, але мені не пощастило дізнатися, як це вирішити:

Проблема

Я хочу зберігати конфігурацію в git і використовувати drush для експорту конфігурації під час розробки, а потім при розгортанні імпортувати конфігурацію. Дуже схоже на відновлення функцій у Drupal 7. Моя проблема полягає в тому, що я не хочу зберігати коди доступу в git для різних інтеграцій. Це призводить до видалення цих конфігурацій
$ drush cim -y

Куди я дивився

Я сподівався, що буде простий список / конфігурація для конфігурацій, які слід виключити під час імпорту / експорту. Здається, він був у якийсь момент, але його, мабуть, було видалено знову, оскільки він доступний в даний час випуску Drupal 8.

Я роздивився, як вносяться зміни конфігурації, порівнюючи стовпець активного та синхронізування, щоб побачити, чи є місце, де я можу видалити зміни, схоже, це не так. Я подивився, як імпульс імпортує конфігурацію, оскільки у неї є якась конфігурація, за винятком власної, але не схоже, що це розширюється. Я переглянув ConfigEvents, але, здається, це все відбувається після імпорту, тому не схоже, що це можна використовувати.

Я щось пропускаю, чи неможливо просто виключити конфігурації з імпорту / експорту?

Відповіді:


7

Неможливо мати виключення конкретно, але є щось.

Так само, як $ conf в Drupal 7, є $ config у settings.php, який можна використовувати для зміни будь-якого місця в конфігурації. Формат є $config['name.of.config']['nested']['key'].

Зауважте, що все, що зберігається в конфігурації, все ще знаходиться в git, тому вам або потрібно зберігати жодний або ваші тестові коди доступу в git. Також користувальницький інтерфейс покаже, що насправді зберігається в конфігурації, і наразі не надасть жодних ознак того, що він переоформлений. Для покращення цього існують певні проблеми.

Я розумію, що це має обмеження, але зараз неможливо утримати щось із експортованої конфігурації. Наскільки мені відомо.


Отже, вам потрібно встановити / оновити конфігурацію у файлі settings.php, а не використовувати інтерфейс.
googletorp

Так, це нічого нового. Нічого не змінилося в робочому процесі в цьому контексті в d8.

11

Ви можете використовувати модуль "Налаштувати ігнорувати": https://www.drupal.org/project/config_ignore

Ви коли-небудь відчували, що конфігурація вашого сайту була переосмислена конфігурацією у файловій системі, коли ви робите друкований диск?

Більше не!

Цей модуль - це інструмент, який дозволяє вам зберігати потрібну конфігурацію.


2
config_ignore - це, мабуть, найбільш стабільне та просте рішення, яке наразі є, і це рішення, ймовірно, найкраще вирішує бажання ОП мати "простий список / конфігурацію для конфігурацій, які слід виключити при імпорті / експорті"
bdanin

7

Для цього можна використовувати комбінацію config_ignore та config_split .

Конфігурація ігнорування дозволяє ігнорувати підмножину об'єктів конфігурації під час імпорту (також запобігає видаленню з моменту випуску 2.x). На жаль, це не запобігає виключенню конфігурації під час експорту.

Щоб виключити об'єкти конфігурації під час експорту, ви можете використовувати config_split, створити нову сутність config_split і залишити папку порожньою. Це запобігає експорту конфігурації у файлову систему; натомість він експортує його в базу даних.

Про цю тему я написав Виключити конфігурацію з управління конфігурацією в Drupal 8 .


5

Щоб розділити конфігурації, ви можете використовувати https://www.drupal.org/project/config_split .

Введіть config_split, який надає команду консолі Drupal для імпорту та експорту відфільтрованої конфігурації. Інтеграція друзів, швидше за все, відбудеться незабаром (адже фільтр натхненний фільтрами -skip-модулі барабану).

Ви можете розділити експорт на різні сайти, які потім можете ігнорувати.

У drupal con dublin 2016 відбулася дуже приємна презентація людей, відповідальних за ініціативу CMI, і я закликаю вас перевірити, незважаючи ні на що.


2

Я просто перевірив @berdir у відповіді №1, і він працює ідеально. Тільки додаю невеличку примітку: ви повинні поставити цілий конфігурацію в цей вар, заповнити. Без нього $ config var не працює належним чином.

Щось на зразок цього:

 $config['language.negotiation'] = array(
  'session' => array(
    'parameter' => 'language',
  ),
  'url' => array(
    'source' => 'domain',
    'prefixes' => array(
      'es' => '',
      'pt-br' => '',
    ),
    'domains' => array(
      'es' => 'YourLocalDomain',
      'pt-br' => 'Anotherlocaldomain',
    ),
  ),
  'selected_langcode' => 'site_default',
  'langcode' => 'es',
);

Документація: https://www.drupal.org/node/1928898

Зверніть увагу на вищезазначену документацію: "Зауважте, що значення, переопределені через $ config у налаштуваннях.php, не будуть переглядатися через інтерфейс адміністрування Drupal."


3
Вам не слід було цього робити. Він повинен зливатися з будь-якими визначеними вами значеннями, але, можливо, він не працює так, як очікувалося в деяких структурах.
Бердір

О, я не міг зробити це запустити правильно. Я спробую налагодити його ще раз, і якщо не запустити правильно, можливо, я можу відкрити помилку в d.org. Спасибі!
estoyausente

1
Я можу підтвердити, що ви можете зробити щось на кшталт$config['module.settings']['some']['value'] = 'foo';
googletorp

2

Мені дещо цікаво, чому досі ніхто не згадував інструменти CMI Drush . Чарівні слова є drush cexyі config-ignore.yml. У вас буде список, який ви можете змінити. Нам потрібен був один раз, щоб виключити екземпляри блоків, в той же час бази блоків оброблялися.

Ми хочемо експортувати всю конфігурацію, але хочемо виключити певні шаблони.

Ось тут і входить --ignore-listваріант drush cexyвходу.

У нашому проекті є папка ./drush, тому ми вставляємо файл у їх назву config-ignore.yml зі змістом наступним чином.

ignore:
  - field.field.contact_message.*
  - field.storage.contact_message.*
  - contact.form.*
  - core.entity_form_display.contact_message*
  - core.entity_form_display.contact_form*
  - core.entity_view_display.contact_message*
  - core.entity_view_display.contact_form*
  - system.site
  - workbench_email.workbench_email_template.*

Тож тепер ми біжимо drush cexyтак

drush cexy --destination=/path/to/config-export --ignore-list=/path/to/drush/config-ignore.yml

Отже, це експорт активної конфігурації, а потім застосувати список ігнорування для видалення небажаної конфігурації.

Тому зараз, коли ви запускаєте, git statusви повинні бачити лише зміни, які ви хочете зробити.

Джерело: https://www.previousnext.com.au/blog/introducing-drush-cmi-tools

Установка

cd ~/.drush
wget https://raw.githubusercontent.com/previousnext/drush_cmi_tools/8.x-1.x/drush_cmi_tools.drush.inc
drush cc drush

Джерело: https://github.com/previousnext/drush_cmi_tools


1

Використання розбиття конфігурації (рекомендується)

Модуль розділення config був зроблений спеціально для цієї потреби.

Конфігурація спліт інтегрована з барабаном.

Використання лише Drush

Друш це також повинен зробити це за допомогою --skip-modulesпрапора.

Ви можете додати наступні рядки в drupal / drushrc.php у веб-корінці свого проекту, щоб зробити це автоматично.

$command_specific['config-export']['skip-modules'] = array('devel');
$command_specific['config-import']['skip-modules'] = array('devel');

Див. Http://www.drush.org/en/master/config-exporting/#ignoring-development-modules

На жаль , є помилка з такою функціональністю: https://github.com/drush-ops/drush/isissue/1820 . Тож наразі вам також потрібно додати ці конфігураційні файли у свій .gitignore, щоб експортовані конфігураційні файли не ставились. Їх триває, щоб, можливо, відмовитись від цієї (баггі) функціональності від друку на користь розбиття конфігурації.


2
Ігнорування файлів конфігурації в git точно не працює. Конфігурація, що не експортується, буде видалена. Наприклад, користувацькі сторінки панелей будуть видалені при імпорті конфігурації.
dobrzyns

@ user157272, навіть якщо ви імпортуєте за допомогою drush з ['config-import'] ['skip-module']?
гагарин

drushrc.php можна навіть розміщувати за межами webroot. Наприклад, на один рівень вище, що корисно, коли ви працюєте з Drupal в налаштуваннях композитора: github.com/drupal-composer/drupal-project .
leymannx

Це не спрацювало для мене. Я додав модулі, але вони все ще були додані до конфігурації модулів включення / відключення.
Джеремі Джон

Я оновив відповідь поточною найкращою практикою (config split)
gagarine
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.