SlideShare a Scribd company logo
1 of 39
Виктор Ликин @vlikin
Система управления конфигурацией в Drupal 8
Киев 2013
http://vlikin.blogspot.com/2013/06/drupal-8.html?spref=tw
Миграция конфигурации
К чему мы наконец-то пришли!
А что мы на самом деле получили?
Получили
● Определили, что является контентом, что конфигурацией.
● Разместили в отдельных хранилищах.
● Реализовали загрузку группами.
● Реализовали мультиязычность конфигурации.
● Организовали процесс миграции конфигурации.
Порядок доклада
● “Features в ядре”. Практический пример миграции конфигурационных
данных между проектами.
● Изменения, касающиеся разработчиков.
● Функциональная схема системы конфигурации.
● Дополнительные модули, функционал, который должен войти в ядро.
● Дискуссия.
● Всё.
Перейдём к практическому применению
Рассмотрим стандартный фунционал Drupal 8, который впитал
в себя наилучшие практики модуля Features.
Визуальный план миграции
Процесс миграции конфигурации
● Изменим настройки на проекте live.
● Переренесём настройки с live active → local staging.
● Обновим настройки на проекте local.
● Проверим результат миграции конфигурации.
Находим настройки информации сайта, изменяем
Что у нас есть на local проекте.
Обновляем конфигурацию на local проекте
Находим файл конфигурации в файловом хранилище
Методы обновления файлов конфигурации
● SCP
● GIT, SVN, ...
● FTP, SFTP
● RSYNC
● DRUSH RSYNC
Перемещаем файлы конфигурации между проектами
● Перемещаем файлы между проектами live и local
● Обновляем файловую конфигурацию с помощью утилиты drush, rsync
drush rsync -d @sm.live:%conf_active @sm.local:%conf_active
Находим страницу синхронизации конфигурации
Находим изменённую группу конфигурации
Проверяем изменения
Команды Drush для конфигурации
Обновление конфигурации
drush @sm.local config-import
drush @sm.local cc all
Обновляем конфигурацию с файлового хранилища в активное хранилище
Проверяем результаты миграции
Смотрим результаты
Что касается разработчиков
Пример использования
// Получаем название сайта.
$site_name = variable_get('site_name', 'Drupal');
// Изменяем название сайта на какое-нибудь другое.
variable_set('site_name', 'This is the dev site.');
// Загружаем набор данных, получаем название сайта.
$config = config('core.site_information');
$site_name = $config->get('site_name');
// Изменяем и сохраняем.
$config->set('site_name', 'My Awesome Site');
$config->save();
Было
Сейчас
Пример конфигурационного файла
name: medium
label: 'Medium (220x220)'
effects:
bddf0d06-42f9-4c75-a700-a33cafa25ea0:
name: image_scale
data:
width: '220'
height: '220'
upscale: '1'
weight: '0'
ieid: bddf0d06-42f9-4c75-a700-a33cafa25ea0
core/modules/image/config/image.style.medium.yml
Пример описания структуры конфигурационного файла
# Simple extended data types:
# Human readable string that must be plain text and editable with a text field.
label:
type: string
label: 'Label'
translatable: true
# Internal Drupal path
path:
type: string
label: 'Path'
# Human readable string that can contain multiple lines of text or HTML.
text:
type: string
label: 'Text'
translatable: true
Другой пример
image.style.*:
type: mapping
label: 'Image style'
mapping:
name:
type: string
label:
type: label
effects:
type: sequence
sequence:
- type: mapping
mapping:
name:
type: string
data:
type: image.effect.[%.parent.name]
weight:
type: integer
ieid:
type: string
image.schema.yml
Типы данных
# Basic scalar data types from typed data.
boolean:
label: 'Boolean'
class: 'DrupalCoreTypedDataTypeBoolean'
email:
label: 'Email'
class: 'DrupalCoreTypedDataTypeEmail'
integer:
label: 'Integer'
class: 'DrupalCoreTypedDataTypeInteger'
string:
label: 'String'
class: 'DrupalCoreTypedDataTypeString'
uri:
label: 'Uri'
class: 'DrupalCoreTypedDataTypeUri'
system.data_types.schema.yml.
Типизированные конфигурационные файлы
$new_slogan = 'Great new site slogan';
$typed_site_info = config_typed()->get('system.site');
$typed_site_info->set('slogan', $new_slogan);
Если вы не используете типизированную конфигурацию,
просто используйте config(),
что намного правильнее и быстрее.
Практика использования
Избегайте множественную инициализацию объектов config в одной функции.
Это сказывается на производительности.
config('foo.bar')->set('foo', 'foo')->save();
config('foo.bar')->set('bar', 'bar')->save();
Лучшим решением будет инициализировать объект config один раз, провести
с ним работу, сохранить.
$config = config('foo.bar');
$config->set('foo', 'foo');
$config->set('bar', 'bar');
$config->save();
Функциональная схема системы конфигурации
Схема миграции
Модуль переводов конфигурации
drupal.org/project/config_translation
Добавляем перевод
Модуль инспектирования конфигурации
Это позволяет инспектировать значения, структуры конфигураций.
drupal.org/project/config_inspector
В виде дерева
В виде формы
https://drupal.org/node/2010798
В виде PHP(raw)
Терминология
● From - a site from, a live site.
● To - a site to, a development site.
● Environment, site - synonymous sometimes.
● Active directory – Current site setting paces in the file system.
● Staging directory – Data is stored there before importing.
● File storage – Current site settings located in the file system.
● Active storage - “Data base” storage, data that is used.
Ресурсы
● Использование системы конфигурирования в Drupal 8
http://goo.gl/g4nbn
● Управление конфигурацией в Drupal 8
http://goo.gl/tvz9I
● Синхронизация сайтов Drupal. Staging в процессе разработки
http://goo.gl/ocLsb
● Примеры использования.
https://drupal.org/node/1809490#config-writing
● Объяснение схем, информации(meta) систем конфигурирования
https://drupal.org/node/1905070
Виктор Ликин @vlikin
Система управления конфигурацией в Drupal 8

More Related Content

Similar to Dcmi v likin kyiv 2013

Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptTimur Shemsedinov
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansmetaform
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCAndrew Mayorov
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.Igor Shkulipa
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработкиAnna Fedoruk
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotkidrupalconf
 
Ruby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсRuby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсDigital-агентство Мэйк
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинPositive Hack Days
 
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в DrupalDrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в DrupalDrupalSPB
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...Viktor Likin
 
Семинар 24-25 апреля 2014 г. «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
Семинар 24-25 апреля 2014 г.  «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»Семинар 24-25 апреля 2014 г.  «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
Семинар 24-25 апреля 2014 г. «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»АНАЛИТИКА ПЛЮС
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битриксAndrii Podanenko
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на RailsAndrei Kaleshka
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноKrivoy Rog IT Community
 
RoadShow Docsvision: Docsvision 5: документооборот на «отлично»
RoadShow Docsvision: Docsvision 5: документооборот на «отлично»RoadShow Docsvision: Docsvision 5: документооборот на «отлично»
RoadShow Docsvision: Docsvision 5: документооборот на «отлично»Docsvision
 
Docsvision 5 – новые возможности для управления организацией
Docsvision 5 – новые возможности для управления организациейDocsvision 5 – новые возможности для управления организацией
Docsvision 5 – новые возможности для управления организациейDocsvision
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.Igor Shkulipa
 

Similar to Dcmi v likin kyiv 2013 (20)

Метапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScriptМетапрограммирование с примерами на JavaScript
Метапрограммирование с примерами на JavaScript
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
Референсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVCРеференсная архитектура приложения на ASP.NET MVC
Референсная архитектура приложения на ASP.NET MVC
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 
Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 
Ruby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсRuby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейс
 
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир СелинИнструментарий для создания дистрибутивов продуктов | Владимир Селин
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
 
Zend Framework и Doctrine
Zend Framework и DoctrineZend Framework и Doctrine
Zend Framework и Doctrine
 
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в DrupalDrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
DrupalCafe #2: Константин Комелин - Быстрый старт для новичка в Drupal
 
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
 
Семинар 24-25 апреля 2014 г. «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
Семинар 24-25 апреля 2014 г.  «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»Семинар 24-25 апреля 2014 г.  «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
Семинар 24-25 апреля 2014 г. «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикс
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
 
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективноkranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
 
RoadShow Docsvision: Docsvision 5: документооборот на «отлично»
RoadShow Docsvision: Docsvision 5: документооборот на «отлично»RoadShow Docsvision: Docsvision 5: документооборот на «отлично»
RoadShow Docsvision: Docsvision 5: документооборот на «отлично»
 
Docsvision 5 – новые возможности для управления организацией
Docsvision 5 – новые возможности для управления организациейDocsvision 5 – новые возможности для управления организацией
Docsvision 5 – новые возможности для управления организацией
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 

Dcmi v likin kyiv 2013