Тестирование плагинов в прямом эфире с 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, он будет эффективно удалять все файлы в вашем плагине. проект, в том числе хранилище. Итак, на сайте тестирования я бы рекомендовал использовать что-то вроде этого. Я никоим образом не связан с этим плагином.

Другие вопросы по тегам