У меня в текущем проекте, навигация генерируется согласно разделов новостей. Сейчас разделы известны, но в будущем могут изменится. И чтобы мне сохранить эти изменения в репозории мне необходимо таскать за собой базу. Но мне такая возможность абсолютно не нравится, бредятина по моему ))).
Мне кажется надо двигаться в направлении стадартых средств обновления. поддержка решений и модулей, которые будут обнавлять свои таблицы и грузить данные. То есть если измениния базы происходят в контектсте нашей работы, то это логичнее запилить в модуль или решение. И использовать написнную в будущем команду bitapp для обновления модулей
А если эти обновления приходят с обновлениями стороних модулей, просто забить. И просто грамотно тестировать разрабатываемы продукт, что бы выявить отклонения работе системы.
Честно, хотелось бы максимально плотно использовать возможности самой системы битрикс, потому что мы имеем продукт, на развитее которого мы не влияем, но использовать приходится.
Готов к дальнейшейму обсуждению, тема интересна...
Ну если про orm, прикрутить это дело к проект дело 10 -15 минут. станут доступны и миграции таблиц и дата-fixtures. Но я это боюсь делать. Потому что прямая работа с таблицами битрикс это путь джедая. Можно нарушить логику, а переписывать внутринюю логику в орм это бредово )
И но в целом подобное решение может быть, но для работы сайта, а для деплоя.
Да читал. Но возник ряд сомнительных моментов. Например, шаблон к стандартному компоненту не заработал. Пока не знаю виноваты мои кривые руки или нет. Кстати, мой проект полностью поддерживет local.
Денис Диденко пишет: Во всей этой катавасии меня интересует именно управление БД в контексте VCS, не думали над этим?
Думал. Сейчас пока выкручиваюсь дампами. Ближайшая цель работа с инфоблоками. Хочется что на подобии этого https://github.com/doctrine/data-fixtures. Как вы думаете прикрутить доктрину будет кашерно? Или использвать свой формат и стандартые методы битрикс.
vbcherepanov пишет: стандартными способами работать не можете
Могу, но чувствую что это медленно, а время, извини - деньги.
Цитата
vbcherepanov пишет: ? так как ВСЕ разработчики битрикса работают
Ну это собственно выбор каждого, я абсолютно не навязываюсь.
Цитата
vbcherepanov пишет: внешними репами не пользуюсь, т.к. работаю один
Извини зря. Попробуй понравится ). Репозитории нужны не только работы в команде, но и для сохранности работы. Допустим рабочий комп сломался, а такое бывает и даже за день до сдачи проекта. Как востоновить работу тогда? Или внес правки в код и испортил продукт, если правок много- ручками исправлять долго. А используя систему контроля версий - одна - две команды.
Цитата
vbcherepanov пишет: Я не понимаю зачем так замарачиваться, что-то новое создавать,
Если честно, извини это я делаю не для тебя, не для Евгения, а для себя. Это мне помагает разобраться в битрикс, и это сокращает время моей работы в перспективе. Я не хочу более обсуждать нужно, то что делаю или нет. Я считаю нужно и буду продолжать и если это поможет еще кому-то буду рад. Этот проект Оpen Source и я всегда рад помощи и любому совету по существу.
Ок. Этот проект создан из-за проблем, которые возникают у меня при разработке. Возможно они появились из-за малого опыта в разработке под Битрикс но какого-то более менее стандартизированного решения я не нашел. И собственно сам проект портирование ряда фич из текущего проекта.
проблемы: - Хранение в кода репозитории. Я об этом несколько раз писал, если необходимо могу описать еще раз? Эту проблему я решил, как описано по ссылке, фикстурами ( маленькими подпроектами). Мне показалось это наиболее удачным решение.
- Установка Битрикс. Да согласен можно хранить 20 000 файлов в проекте + базу. И просто клонировать репозиторий и загружать базу. Но тогда это дает сильную системы привязку к текущей базе. А при создании нового проекта просто качать новую версию Битрикс и просто ставить ручками. Это проблему я решил, с помощью команды установки Битрикс. ( она сейчас еще в приложении, но необходимо вынести настройки в конфигурационный файл)
- Установка решения. Ну эта проблема вытекла из предыдущей. К сожалению, я пока не могу ее автоматизировать. Т. к. для каждого решения установка которого основана CWizard и требует ввода каких-либо данных, требуется писать установщик. Это не сложно но на это нужно время.
-Перенос данных. Сейчас речь идет об переносе инфоблоков. от одной машины к другой в репозитории. Хотелось бы не просто переносить но и контролировать что переносить, при необходимости изменить. Сейчас проблему можно решить тремя вариантами: дампом базы, экспортом-импортом csv, экспортом-импортом xml, Дамп базы это решение мне не нравится, потому что сложно контролировать изменения, самому можно что то поправив или новым дампом или написанием sql. экспортом-импортом csv - ну это абсолютно машинный вариант, писать в этом формате в ручнуюю невозможно ( не наглядно) экспортом-импортом xml,- это сейчас наиболее приемлемо. легче самому написать и прочитать. Над решение этой проблемы думаю
Ну и несколько прикладных проблем: -Тестирование. В Битрикс не предусмотрено тестового окружения. Хочу что бы было это. Решение уже сделал, добавлю его на досуге в bitapp
-Создание модулей, шаблонов, решений, компонент
Как-то так в при текущей раскладке. P.S я не пытаюсь распиарится, и изначально затевал эту тему, чтобы узнать как лучше решить выше перечисленные проблемы.
Ну собственно проект отклыл. Извиняюсь за недельную задержку)). Надо понимать, что все еще очень сырое. Установка bitrix одной командой будет доступна завтра.
Кирилл Зайцев пишет: Люто люблю и почетаю TDD, потому, что если frontend, что то сломает, я это увижу и руки поотрываю, нерабочий код просто не деплоится.
Я использую BDD принципе теже яйца только с боку. Полность сайт легко контролить через селениум ( потому что много скриптов у админа работают через js, а самому все скрипты битрик перебирать пока лень)
Кирилл Зайцев пишет: 1) Я backend и занимаюсь исключительно серверной частью так уж получилось, что бизнес логику внутри шаблона в rails держать не принято ( дичайший моветон ), существуют ли какие то решения, что бы избежать этого ада на стороне шаблона ( шаблонизаторы, препроцессоры ), что бы frontend с этим мог спокойно работать?
Был где-то модуль добавляющий twig, но мне он показался плохим решением (Евгений написал о нем). Сложность шаблонизации заключется использовании echo и буферизации вывода в родных шаблонах. Чесно с лету не победил, отложил на будушее. В принципе можно подключить любой шаблонизатор через компосер и самостоятельно его вызывать. Но это решение доступно только для частичного использования. Бардак в шаблонах все равно так не получится победить. Т.К. страница состоит из кучи компонентов, и каждый компонент имеет отдельный шаблон.
Есть только 1 единственный правильный и надежный источник информации об системе - это код текущей версии. Да у Битрикс код не идеальный, но именно это код у тебя работает. + есть официальные курсы (бесплатные и опубликованные здесь) и api- документация.
Цитата
Антон Долганин пишет: Я приобрел книгу: Р. Басырова "Строим профессиональный интернет-магазин". Какого вы мнения об этой книге. Подходит ли она на роль хорошего учебного пособия?
Эту книгу ни читал. Но честно ни разу не встречал книги с названием типа: "Пилим быстро-сайт" или "Говнокодим проффесиАнально", что бы в ней было, что-либо отличное от общего обзора технологий. По-моему книги заслуживающие внимание в программировании касаются методик разработки и паттернов. все остальное лабуда в которой нет и 10% информации из документации. Роль хорошего учебного пособия по Битрикс будет реализации интернет-магазина в параллель с чтением доков и попыткой реализации всего согласно идеологии Битрикс, а не так как побыстрее.
Владимир Полухин, Я человек, работаю один и конечно иногда могу забить @уй, это же для себя, а не для заказчика. Но в целом какая разница какой проект. Почитайте о TDD, BDD. Это методики разработки, которые упрощают жизнь разработчику. Тесты это не требования для ТЗ, это нечто не разделимое с кодом приложения))).
s909 пишет: Установка Битрикса без открытия браузера? Где это и кому это может понадобится?
Ну например свои,у меня три рабочих места + vps в тырнете. Два текущих проекта на битрис. Одно рабочее место основное (огромный монитор, механическая клава), (все проеты разрабатываются на нем). Тут кончно можно и мышечкой по кнопочкам. Но возникают ситуации, когда приходится на другом рабочем месте + срочно надо внести какую-нибуть правку в проект. Тут вариантов несколько. 1. Все держать в репозитории не приемлимо. сколько файлов в чистой установке без кеша и решений я описал выше. 2. Таскать все на флешке, флешку можно забыть-потерять, да и тогда мы искльчаем бонусы контроля версий. 3. хранить в репозитории только свои файлы. Но тогда надо сначала развернуть битрикс, поставить доп. модули, сверху накатить свои изменения, обновить базу. Все это я просто хочу автомотизировать и сократить до одного двух действий. У меняя за нескосколько лет уже наладился такой алгоритм работы. 1. Развертывание рапозитория. 2. Прогон тестов. 3. Написание теста для новой функциональности 4. Написание реализации 5. Прогон тестов 6 Коммит в репозиторий. В этом случае я точно уверен, что работу я выполнил. Иначе получается бардак. Так же консольные утилиты очень удобны для для быстрого развертования в тырнетах. Например используя vargant + косольную установку на чистой vps можно автоматом разверуть php, nginx, и нужный сайт. Приэтом не тра@ясь установкой и настройкой. Или же развернуть нужную конфигурацию у себя на виртуалке. Это я все к тому, что на таких мелочах много времени тратится, А мое время это деньги заказчиков)
Евгений Задорин пишет: А еще есть волшебная папка upload, которая на больших проектах разрастается до нескольких Гб. Естественно, ее не хочется тащить ни на dev-сайт, ни тем более на локалхосты.
У меня пока таких проблем не было, от чего такая большая папка миллион картинок?
Евгений Задорин, В целом решение будет opensource, Чуть позже залью на гитхаб, сейчас не могу потому что в текушей реализации, есть код, который использует битрикс для генерации триальных ключей, и выкладывать такое в паблик я не могу. В двух словах о реализации, решение сейчас достаточно "хардкодное", ввиду того что сейчас ориентированно только на текущий проект Общая структура проекта такая:
Код
/web - папка в которую разворачивается сайт (на катогую настраивается веб сервер)
/fixtures- папка с файлами, из которых будет собираться проект
/kavsm - мой конкретный проект
/standard - этой папке я разместил левые бесплатные модули, и раз правовок в ядро которые посчитал нужным
/features - папка с тестами
/vendor - папка с зависимостями компосера.
Само приложение реализованно на symfony/console. Опишу только ключевые моменты
2. $bin/bitapp bitrix: dump:standard Тут просто, в папку /web из папки /vendor/bitrix/standard копируюся исходника битрикс + Копируются файлы из папки /fixtures/strandard -У меня здесь лежит модуль битрикс live api + я сделал некоторые правки в ядре :oops: , что убать нотисы
3.$bin/bitapp bitrix:install Устанвкой в битрикс занимается CWizard c пределенными СStep Я унаследовал их убрал "умирания" в итоге получил точную реализацию установки в консоли конфиги сейчас , обычный массив в котором указаны основные параметры установки, типа кофгурация базы, использование utf8, пароль администратора.
4. $bin/bitapp bitrix: dump:kavsm ну так из папки fitures/kavsm в папку /web копируется файы текущего проета + заливается база данных в дву словах как то так
Для себя давно сделал вывод, что для эффектирной работы, крикание мышкой в браузере неприемлемо.По этому мой вопрос скорее такой: Я толком не знаю битрикс и не понимаю, как мне перестать тыкать мышкой в панели администратора и наконец начать писать код, абсолютно не открывая браузер, и при этом получить готовый сайт.
Вот что я для этого сделал (специально в консоли добавил время вывода, чтобы было видно сколько времени отнимает задача по развертованию рабочего проекта на новой машине):
2. Разворачиваю Битрикс: управление сайтом-стандарт ( данное действие равностильно, выкачиванию, нужной версии битрикс, и разворачивание его на сервере)
Андрей Гаврилов пишет: а нафиг роботу лазить в бд если не секрет раскажите зачем ему там чего то делать. он что заточен под apiбитрикса чтобы такое творить.
Тут речь о тестах. Допустим приемочный тест такого вида.
Код
Сценарий: Последняя новость видна на главной странице
Дано Я - администратор
Если Я добавляю новость с заголовком "Желто желтейшая новость"
И перехожу на "Главную страницу"
То я должен видеть тест "Желто желтейшая новость" в "#top h3"
Это делает behat автоматом. И именно его я назвал роботом. И именно этот робот взаимодействует с сайтом, как реальный пользователь и именно из-за этого возникают изменения в БД.
Цитата
Андрей Гаврилов пишет: В работе пользуюсь VCS gitпроблем нет совсемдля работы выкачивается только та часть с которой работаешь
Об этом и речь. В репозитории нужен только свой код. Код ядра в репозитории вообще не нужен. Он свободно получается http://www.1c-bitrix.ru/download/cms.php (Выбери нужную версию)