За допомогою розширень налагодження / режиму розробника достатньо захисту


18

Є декілька приємних розширень для розробників Magento, які зазвичай не хочеться мати в живій системі.

Як ви можете зберігати їх у сховищах проектів, але уникати їх експозиції в прямому магазині?

Відповіді:


20

Є два відносно нові методики для цього:

  • Використовуйте модман, щоб ви могли самостійно контролювати, що розгорнути для кожного середовища. Це означає, що ви працюєте modman deploy [name-of-dev-extension]лише у вашому середовищі розробників.

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


1
+ один для перегляду модману :) хороший варіант
Toon Van Dooren

Чи можете ви описати докладніше, як виглядало б таке розгортання середовища? Я маю на увазі, де я зберігаю список модулів, які я розгортаю? Зазвичай у мене папка з усіма модулями - і знову ж таки, мені доводиться відокремлювати реалізацію та розвиток.
Алекс

@ Алекс: дивіться, будь ласка, мою редакцію.
user487772

@Tim: спасибі! Я також відредагував вашу відповідь зараз.
Олексій

@ Алекс: Дякую Я цього не знав :-)
user487772

10

Зазвичай їх можна вимкнути за допомогою прапора конфігурації, тому вони технічно активні, але нічого не роблять. Якщо ви встановите цей прапор неправдивим у app/etc/local.xmlсвоїй живій системі, вам слід буде добре.


Це хороше рішення, якщо ви не хочете зберігати local.xmlфайл у вашому репо. Що може бути випадком.
user487772

Чудова відповідь - local.xmlзазвичай немає у репо
Олексій


5

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


У цьому випадку ви обмежитеся внесенням змін у файл завантажувального файлу розширень (наприклад, зміни залежностей). Крім того, якщо ви перевірите, скажімо, на вашій іншій машині вам доведеться ще раз робити ці хитрощі. Можливо, буде ще незручніше з командою декількох розробників.
user487772

Якщо ви ігноруєте файл локально, єдине, що повинні зробити інші розробники - це ввімкнути його знову. Це займе лише кілька секунд.
Toon Van Dooren

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

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

3

Я думаю, що найкращий спосіб вирішити це - або зберегти всі ці модулі в локальному codePool і відключити всі локальні модулі в прямому ефірі за допомогою цієї лінії у вашому local.xml:

    <disable_local_modules>true</disable_local_modules>

Або ви можете зробити "Вимкнути вихід модуля" у вихідному середовищі у вашому прямому середовищі. (Система -> Конфігурація -> Додатково). Однак це не повністю відключить модуль. Але, можливо, достатньо лише того, щоб ти хотів цього заховати.

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


Усі 3 рішення недостатньо хороші. Відключення localмодулів змусить вас перемістити всі інші модулі з localcodePool communityі зробити це для всіх майбутніх розширень. Як ви сказали, вимкнення модулів виводить все ще дозволяє розширення, сповільнюючи ваш магазин. І 3-е рішення потребуватиме модифікацій, які будуть перезаписані оновленням розширень.
user487772

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

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

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

Брайан, як я вказав у своєму коментарі, ви можете налаштувати код як ваш запит. Звичайно, необроблена ідея не відповідає запиту. Наприклад, якщо ви написали, що ваше розширення залежить від параметра, ви можете перевірити чи керувати над фрагментом!
Oğuz Çelikdemir
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.