Yii2 организация работы с проектами

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Ответить
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Yii2 организация работы с проектами

Сообщение mihail_dev »

После выхода алфа версии понял что пора изучать и готовится к работе с Yii2!
Долго думал как организовать работу совместив приятный установщик пакетов Composer и выходы версий проекта.

Пришёл к следующиму тз:
1) Проект это целое версия приложения и должна устанавливаться как пакет(чтобы можно было легко обновлять)
2) Менеджер не должен сильно задавать тон написания проектов (организация проекта свободна)
3) Организация работы с темами

Принцип работы:
Создаём проект в виде Composer пакета
На сервере создаём файл установки(composer.json) c минимальными настройками (описать пути и подключить необходимый проект и тему если необходимо)
Устанавливаем! Всё готово!

Пример установки
composer.json:

Код: Выделить всё

{
    "minimum-stability": "dev",
    "require": {
        "mihaildev/yii2-project-blank": "*",
        "mihaildev/yii2-test-theme": "*"
    },

    "extra": {
        "webpath": "www",
        "themes": {
            "mihaildev/yii2-test-theme": "basic"
        }
    }
}
После установки в настройках private/config/web.php

Код: Выделить всё

$config = [
    'components' => [
        //...
        'view' => [
            'class' => 'yii\web\View',
            'theme' => [
                'basePath' => '@webroot/themes/basic',
                'baseUrl' => '@web/themes/basic',
            ],
        ],
        //...
    ],
    //...
]; 
Более подробно о Плагинах читать на GitHub-е

Менеджер проектов - https://github.com/MihailDev/yii2-projectmanager
Менеджер тем - https://github.com/MihailDev/yii2-thememanager


Если не сложно напишите ваше мнение или пожелания!
Изображение
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 организация работы с проектами

Сообщение nizsheanez »

Создаем проект по вашему подходу и оооп - https://github.com/MihailDev/yii2-proje ... fig/db.php
утек пароль к базе.
понятно, что можно в привате держать, ну а если еще что-то делать нужно.
Нет не получится из менеджера пакетов сделать сборщик проектов, ну не заменит он Phing, Grunt, .sh или что там еще.

По поводу улучшить:
Можно автоматизировать деплой хуком
http://rmcreative.ru/blog/post/prostoy- ... ija-github
или деплоить при смене версии пакета или чего-то подобного.
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Yii2 организация работы с проектами

Сообщение mihail_dev »

автоматическое обновление мне кажется лишнее мало ли кто какуе то ошибку не заметит а везде уже обновлено
не все же скрупулёзно проверяют код!!!

по поводу "утек пароль к базе"
да действительно есть шанс утерять пароль но пользуясь минимальной осторожностью можно избежать этого!

я понимаю что данный подход наверно не сможет заменить Phing, Grunt и тд.
но возможно кто то допустим я буду пользоваться данным плагином он полностью удовлетворяет все мои потребности и упрощает внедрение и обновление версий
конечно над ещё продумать очистку кэша, сжатие css и js и работу с миграциями
хотя в принципе у компосера есть запуск консольных команд так что это всё можно реализовать и там что скорее всего будет правильнее
Изображение
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 организация работы с проектами

Сообщение nizsheanez »

1) Для того что бы автоматическое обновление не подхватывало неведомый код - нефиг коммитить в мастер.
Достаточно разрабатывать в другой ветке и только новые версии (стабильные/проверенные) мержить в мастер, что и будет подхвачено хуком.

2) Осторожностью? Какой?

3) Вот и теперь ты мне скажи, как твой подход отличается от .sh файла

Код: Выделить всё

git pull
composer update
//миграции
//сжимаем ассеты
//сжимаем картинки
4) за что борешься? за то что бы вместо git pull && composer update писать просто composer update?
5) а файлик этот composer.json где хранить будешь? в другой репе? Если в той же то как его обновлять на сервере?

6) Ну и по оформлению много вопросов:
"assets":"dir_w" - а зачем ассетам права на исполнение?
dir_w/dir_r: реализация этого уже есть в "yii\\composer\\Installer::setPermission"
dir_w - директория с правами на запись 0777 - права на запись это 0222, а у тебя и запись и чтение и исполнение (ну это я конечно придираюсь)
install - сделанно для конфиг фаилов первый раз создать один раз настроить и больше не трогать - ну как это не трогать? ну не бывает такого. Только если проект без поддержки.
<app> - что за еще один шаблонизатор? Используйте консольную комманду sed - не прогадаете.
Последний раз редактировалось nizsheanez 2014.01.04, 10:07, всего редактировалось 1 раз.
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 организация работы с проектами

Сообщение nizsheanez »

с поддержкой тем - решение интересное.
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Yii2 организация работы с проектами

Сообщение mihail_dev »

1) "нефиг коммитить в мастер" - ну бывают в жизни неожиданности
2) в своём индех файле прописать локальный конфиг файл который не войдёт в состав файлов версии
3) действительно отличие небольшое но есть
4) да примерно за это + пару доп плюшек таких как в проекте никогда не знаешь как будет располагаться вебрут
5) файл composer.json вруную формируется на сервере один раз там прописываются минимальные настройки такие как пути до вебрут и вендор и привайт и сам проект больше этот файл трогаться не будет потому что проект будет обновляться как пакет

Код: Выделить всё

{
    "minimum-stability": "dev",
    "require": {
        "my/yii2-project": "*"
    },
    "extra": {
        "webpath": "www",
        "privatepath": "private"
    },
    "config":{
        "vendor-dir":"vendor",
        "bin-dir":"bin"
    }
}
6) dir_w/dir_r: реализация этого уже есть в "yii\\composer\\Installer::setPermission" - разница в том что данное штука создаёт папку если её нет и выдаёт соответствующие права
install - ну как это не трогать? ну не бывает такого. - это сделанно в основном для конфиг файлов тоесть при исталяции он создаётся после инстала его правим (вносим настройки дб допустим) а при обновлении этот файл уже не будет перезаписываться чтоб не затереть настройки
<app> - что за еще один шаблонизатор? Используйте консольную комманду sed - не прогадаете. - здесь я немного не понял что вы имели введу
Изображение
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 организация работы с проектами

Сообщение nizsheanez »

1) ага
2) ок
3) ок
4) ок
5) Минус такого решения в том, что когда что-то делается ручками, и скажем сгорает сервак или жесткий. То получаем лежащий сайт который что бы поднять нужно 2 часа что-то руками писать. Configuration Management вам в помощь.
6) разница в том что данное штука создаёт папку если её нет и выдаёт соответствующие права - конечно невероятная фича :-) почему ее не сделать пулреквестом в yii-composer?
install - см. пункт 5
<app> - ну, я так подозреваю вы там как-то это парсите и реплейсите, вот я вам и предлагаю использовать утилиту sed с файлами в которых хранятся все конфигурации в виде ключ-значение.
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Yii2 организация работы с проектами

Сообщение mihail_dev »

nizsheanez писал(а): 5) Минус такого решения в том, что когда что-то делается ручками, и скажем сгорает сервак или жесткий. То получаем лежащий сайт который что бы поднять нужно 2 часа что-то руками писать. Configuration Management вам в помощь.
то есть вы хотите сказать что по новой создать такой composer.json

Код: Выделить всё

{
    "minimum-stability": "dev",
    "require": {
        "my/yii2-project": "*"
    },
    "extra": {
        "webpath": "www",
        "privatepath": "private"
    },
    "config":{
        "vendor-dir":"vendor",
        "bin-dir":"bin"
    }
}
 
и запустить composer install и дописать настройки дб это займёт 2 часа?
nizsheanez писал(а): 6) разница в том что данное штука создаёт папку если её нет и выдаёт соответствующие права - конечно невероятная фича :-) почему ее не сделать пулреквестом в yii-composer?
install - см. пункт 5
<app> - ну, я так подозреваю вы там как-то это парсите и реплейсите, вот я вам и предлагаю использовать утилиту sed с файлами в которых хранятся все конфигурации в виде ключ-значение.
"пулреквест в yii-composer" не вижу смысла там нет в этом необходимости
по поводу sed ничего не могу сказать только одно это ещё одна плюшка которую нужно ставить вопрос зачем?
Изображение
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Yii2 организация работы с проектами

Сообщение nizsheanez »

запустить composer install и дописать настройки дб это займёт 2 - ну, если продакшн от девелопа у вас отличается только этим... то думаю тут и обсуждать нечего.
Но не забываем, что вы сами пришли к выводу, что там, миграции всякие, то пожать се пожать... и в итоге деплоилка растет...

Зачем sed? - ну его синтаксис все знают, а ваш нет. И я не видел чтобы его где-то не было.
Ответить