Тестирование плагинов в прямом эфире с Varying Vagrant Vagrants
В настоящее время я пытаюсь использовать VVV для разработки и тестирования моих плагинов. Мой хост ОС - Win10.
Мои плагины в D:\Workshop\projects\vendor\module
, Я давно использовал эту структуру папок, и она действительно удобна, особенно для использования с Composer и друзьями.
Сейчас я установил VVV, создал сайт с VV. Я хочу протестировать плагин, исходный код которого находится в D:\Workshop\projects\XedinUnknown\my-project
, Итак, я создаю символическую ссылку в D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\htdocs\wp-content\plugins
это указывает на папку этого проекта. Увы, это не работает. Если я SSH в VVV и ls /srv/www/my-test-site/htdocs/wp-content/plugins
, Я могу видеть my-project
там, но это указывает на ../../../../../../../XedinUnknown/my-project
которого, конечно же, не существует. Если вместо символической ссылки я создаю соединение, это просто пустой файл.
Я подозреваю, что это связано с тем, как среда Linux обрабатывает символические ссылки Windows, но я не совсем уверен. Можно ли как-то заставить эту работу работать? Я действительно не хочу копировать всю папку проекта в VVV.
Это также рассматривается здесь.
1 ответ
Так что, похоже, я нашел какое-то решение. Я добавил синхронизированную папку, которая соответствует моим проектам дома. Затем я создаю символическую ссылку на эту папку из каталога плагинов WP внутри виртуальной машины.
Шаг 1 - Добавить общую папку
Это должно быть сделано в Customfile
как объяснено здесь. Этот файл должен находиться в том же каталоге, что и Vagrantfile
Например, он станет Vagrantfile
родного брата В моем случае, если вы следуете из моего вопроса, это в D:\Workshop\projects\XedinUnknown\vvv-local
, Все, что здесь помещено, становится глобальным для всего ВВВ. Это также дает вам возможность использовать разные комбинации ваших проектов на разных сайтах. Добавьте это содержимое в свой Customfile
, создавая его, если он не существует.
config.vm.synced_folder "D:/Workshop/projects", "/srv/projects", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
Конечно, вы должны заменить D:/Workshop/projects
с пути, где вы храните свои проекты. Обратите внимание на косую черту (/
). Это работает на Win / Nix. Я подозреваю, что для конфигурации только для Windows вам придется заменить их \\
, потому что это escape-последовательность.
Шаг 2 - Добавить ссылку на проект
Это должно быть сделано на вашем сайте vvv-init.sh
файл. В моем случае этот файл был в D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\
потому что я хочу создать эту символическую ссылку специально для my-test-site
сайт. Обратите внимание, что ваш путь к VVV, вероятно, будет другим, и он не обязательно должен находиться внутри каталога проектов. Это где вы клонировали ВВВ. Добавьте следующие строки на ваш сайт vvv-init.sh
файл.
if [ ! -f "htdocs/wp-content/plugins/my-project" ]; then
echo 'Creating symlink to plugin project...'
cd ./htdocs/wp-content/plugins
ln -s /srv/projects/XedinUnknown/my-project my-project
cd -
fi
В приведенном выше фрагменте измените путь к нужному пути проекта, учитывая, что /srv/projects/
Теперь карты в реальном времени отображаются в корне проектов в вашей операционной системе. Вы также можете заменить второе вхождение (последнее слово) my-project
в ln -s /srv/projects/XedinUnknown/my-project my-project
с тем, что вы хотите. Пока вы не измените его позже, ваш плагин не должен внезапно деактивироваться.
Кроме того, из того, что я понял, vvv-init.sh
работает во время подготовки, а не каждый раз, когда машина включена. Итак, если вы хотите запустить код там, вы должны запустить vagrant up --provision
из каталога ВВВ. Если вы не хотите предоставлять, вы можете запустить его вручную. СШ в ВВВ с vagrant ssh
, затем cd /srv/www/my-test-site
(заменить my-test-site
с названием вашего сайта), и запустить . vvv-init.sh
,
Послесловие
Я довольно плохо знаком с сценариями Bash и не знаю, является ли мое решение лучшим, поэтому, пожалуйста, не стесняйтесь предлагать лучшие версии сценариев Bash. Я также не знаю Ruby, и я новичок в Vagrant, поэтому, пожалуйста, не стесняйтесь предлагать улучшения Customfile
- это по сути то же самое, что и Vagrantfile
,
Одна возможная проблема, которую я могу предвидеть с этим решением (и это по своей природе является особенностью архитектуры файловой системы), заключается в том, что если WordPress решит внести изменения в ваш плагин, например, если вы запустите обновление WP, он будет эффективно удалять все файлы в вашем плагине. проект, в том числе хранилище. Итак, на сайте тестирования я бы рекомендовал использовать что-то вроде этого. Я никоим образом не связан с этим плагином.