Использование расширений отладки / режим разработчика достаточно защиты


18

Для разработчиков Magento есть несколько хороших расширений, которые вы обычно не хотите использовать в реальной системе.

Как вы можете хранить их в репозитории проекта, но не показывать их в реальном магазине?

Ответы:


20

Для этого есть два относительно новых метода:

  • Используйте modman, чтобы вы могли сами контролировать, что развертывать для каждой среды. Это означает, что вы работаете modman deploy [name-of-dev-extension]только в своей среде разработки.

  • Используйте magento-composer с различными composer.jsonсценариями для разных сред. И еще более простой способ - указать эти расширения как dev-модули, а затем установить проект с помощью --require-devкоммутатора на компьютере разработчика.


1
+ один за ссылку на модмана :) хороший вариант
Ван Дурен

Можете ли вы описать, как будет выглядеть развертывание для конкретной среды? Я имею в виду, где я храню список модулей, которые я развернул? Обычно у меня есть папка со всеми модулями, и поэтому я снова должен разделить live и development.
Alex

@ Алекс: пожалуйста, смотрите мое редактирование.
user487772

@ Тим: спасибо! Я также отредактировал ваш ответ сейчас.
Алекс

@ Алекс: Спасибо. Я этого не знал :-)
user487772

10

Обычно их удобно отключить с помощью флага конфигурации, поэтому они технически активны, но ничего не делают. Если вы установите этот флаг на false в app/etc/local.xmlвашей действующей системе, все будет в порядке.


Это хорошее решение, если вы не хотите хранить свой local.xmlфайл в своем репо. Что может быть случаем.
user487772

Отличный ответ - local.xmlобычно не в репо
Алекс

6

Посмотрите MageTrashApp, который был недавно создан на Magento Hackathon в Берлине. Позволяет деактивировать модули через панель администратора.


5

Простой способ сделать это - отключить модуль в / etc / modules, нажать его, игнорировать файл локально и снова включить его.


В этом случае вы будете ограничены в внесении изменений в файл начальной загрузки расширений (например, изменение зависимостей). Также, если вы проверите, скажем, на другом компьютере, вам придется сделать все эти трюки еще раз. Это может быть еще более неудобно с командой из нескольких разработчиков.
user487772

Если вы игнорируете файл локально, единственное, что нужно сделать другим разработчикам, это включить его снова. Это займет всего несколько секунд.
Toon Van Dooren

Правильно. Но тогда они снова должны игнорировать это локально. И это для каждого расширения для каждой рабочей копии. Я имею в виду, что ваше решение определенно будет работать, но немного неудобно.
user487772

правда, я думаю, что я только посмотрел на это с моей позиции, я обычно интегрирую только 1 или 2 инструмента разработчика :-)
Toon Van Dooren

3

Я думаю, что лучший способ справиться с этим - либо сохранить все эти модули в локальном codePool и отключить все локальные модули в режиме реального времени с помощью этой строки в вашем local.xml:

    <disable_local_modules>true</disable_local_modules>

Или вы можете сделать «Disable Module Output» в бэкэнде в вашей реальной среде. (Система -> Конфигурация -> Дополнительно). Однако это не полностью отключить модуль. Но, может быть, этого достаточно, чтобы ты хотел скрыть это.

Единственное, о чем я могу думать, - это написать какой-нибудь код, который сможет это осуществить. Просто проверьте, находится ли он в режиме разработчика ( Mage::getIsDeveloperMode()), а затем отключите модули. Я нашел более подробную информацию о достижении этого здесь: /programming/6520634/magento-how-to-disable-module-programmatics


Все 3 решения недостаточно хороши. Отключение localмодулей заставит вас переместить все остальные модули из localcodePool, communityа также сделать это для всех будущих расширений. Отключение вывода модулей, как вы сказали, позволяет расширению замедлять работу вашего магазина. А третье решение потребует изменений, которые будут перезаписаны с обновлением расширений.
user487772

2
@ Я абсолютно согласен. Должен быть лучший способ справиться с этим, должна быть базовая конфигурация отключения / включения модулей в режиме разработки.
Рик Кейперс

3

Я обычно просто помещаю их в свою среду тестирования, но не проверяю их в системе контроля версий, например, используя .gitignoreфайл, чтобы исключить их из рассмотрения для принятия.


ОП акцентировал внимание на сохранении расширений в хранилище.
user487772

1

На конференции Imagine 2011 Эрика Хансена есть слайд. Он указал код на слайде, как показано ниже (для режима разработчика)

# File : index.php
if(preg_match('/^stage\.|\.dev$/', $_SERVER['HTTP_HOST'])) {
   $_SERVER['MAGE_IS_DEVELOPER_MODE'] = true;
}

Вот Эрик, включающий настройку на основе поддоменов, которую вы можете настроить самостоятельно.


какое это имеет отношение к модулям для разработки?
Брайан Руис

Уважаемый @bryan_ruiz, система Magento проверяет MAGE_IS_DEVELOPER_MODE, активен он или нет. Проверьте статью Алана. Режим разработчика Magento
Oğuz Çelikdemir

Что я говорю, я не понимаю, как это связано с вопросом. Режим разработчика не будет включать или отключать модули, которые он использует.
Брайан Руис

Брайан, как я указал в своем комментарии, вы можете настроить код, как ваш запрос. Конечно, сырая идея не соответствует запросу. Например, если вы написали, что ваше расширение зависит от параметра, вы можете проверить или контролировать приведенный выше фрагмент!
Огуз Челикдемир
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.