Включить библиотеку без запуска дамп-автозагрузки для проекта Laravel 4.x

Я занимаюсь разработкой проекта Laravel, и недавно мы начали работать с нашей командой DevOps, чтобы вывести наше WebApp на промежуточный сервер.

Команда DevOps не знакома с Laravel и довольно не любит запускать операции командной строки в проекте, чтобы запустить его. Между нашей последней сборкой и этой сборкой мы добавили несколько новых сервисов в каталог app / и несколько сторонних библиотек в каталог vendor /.

Как мы можем включить эти службы / фасады в папки app / и vendor / без использования дампа-автозагрузки composer, чтобы их можно было использовать в проекте? Это разумное решение, или я должен работать / ожидать, чтобы убедить DevOps, что им нужно научиться запускать команды композитора из CLI?

Спасибо!

0

Решение

Ваши люди из DevOps правы: вам не нужно, чтобы Composer запускался на производстве, на производственных машинах.

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

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

Поскольку автоматизация важна, вы должны создать скрипт, который делает все необходимое, чтобы войти в это состояние, «полностью собрав все необходимые файлы и выполнив все необходимые действия». Почему скрипт? Потому что для выполнения этих вещей, вероятно, потребуется не только один звонок composer install --no-dev — например, компоненты внешнего интерфейса, такие как Javascript, лучше управляются с помощью Bower или чего-то, что НЕ является Composer. Composer для управления PHP-кодом.

Когда у вас есть этот сценарий развертывания, ваши разработчики DevOps будут счастливее: они могут развернуть приложение, извлекая его из репозитория и затем запускать один сценарий. Им НЕ нужно устанавливать что-либо, связанное с разработкой, на рабочий компьютер (обратите внимание, что каждое программное обеспечение, позволяющее разработку программного обеспечения на рабочем компьютере, очень полезно для злоумышленника в случае нарушений безопасности).

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

0

Другие решения

Вы можете смонтировать каталог с помощью FTP (S) или SFTP / SSHfs на локальном компьютере, а затем запустить composer dump-autoload (или любую другую команду, которую вы хотите выполнить) в этом локальном каталоге.

Как это сделать, зависит от вашей операционной системы.

Но да, они действительно должны привыкнуть делать это сами.

2

Как мы можем включить эти службы / фасады в папки app / и vendor / без использования дампа-автозагрузки composer, чтобы их можно было использовать в проекте?

Я сводлю этот вопрос к чисто проблеме автозагрузки:

Настройте автозагрузчик приложения для загрузки вновь добавленных классов с их местоположения.

Это значит добавить свой собственный автозагрузчик в стек автозагрузчиков Laravel на позиции перед Composer.

Laravel Autoloader Stack

1 Illuminate\Foundation\AliasLoader::load()
2 YourApplicationLoader::load()              <---- load your services & whatnot
3 Composer\Autoload\ClassLoader::loadClass()
4 Swift::autoload()

Если библиотеки не загружены Composer, потому что dump-autoloader не был запущен,
тогда автозагрузчик приложения загрузит их.

Для большего: http://alanstorm.com/laravel_5_autoloader

Это разумное решение, или я должен работать / ожидать, чтобы убедить DevOps, что им нужно научиться запускать команды композитора из CLI?

«Новый» подход — запускать Composer и на производственных машинах.

В то время как подход «старой школы» заключается в упаковке вашего приложения со всеми его зависимостями от промежуточного сервера. Другими словами: создайте готовый к развертыванию архив, который вы можете просто извлечь на производстве.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector