Хватит ремесленнику спрашивать "Вы действительно хотите выполнить эту команду?"
Я новичок в использовании Laravel 4, запускаю его на своем локальном хосте. Я хотел бы знать, как я могу заставить ремесленника пропустить вопрос, задавая Do you really wish to run this command?
каждый раз, когда я выполняю команду миграции? Я просто хотел бы выполнить команду сразу, не печатая y
, А также без добавления --force
в конце команды миграции.
Я знаю, что подсказка действительно важна для производства, но я нахожу это немного раздражающим, особенно когда вы находитесь в учебнике. Я просто хочу выключить его, чтобы облегчить жизнь.
Любая помощь будет принята с благодарностью.
3 ответа
Если вы установите локальную среду, вы не получите предупреждающий вопрос, так как он отображается только тогда, когда Laravel обнаруживает, что вы находитесь в рабочей среде, где запуск миграции по ошибке может быть опасным. Вы можете просто добавить следующее в свой bootstrap/start.php
файл:
$env = $app->detectEnvironment(array(
// The array value should be your hostname
'local' => array('your-machine-name'),
));
Вышеуказанное позволит Laravel установить локальную среду, когда он обнаружит, что имя хоста вашего компьютера соответствует указанному вами, что позволяет избежать отображения сообщения.
Для получения дополнительной информации о настройке сред и преимуществах, которые вы получаете от этого, прочитайте Документы по конфигурации среды Laravel.
Добавление больше к ответу и комментариям Богдана.
В случае, если вы не знакомы с концепцией сред в Laravel, здесь можно указать различные конфигурации, специфичные для среды, в которой работает ваше приложение. Например, у вас будут разные учетные данные базы данных в вашем локальном окружении, чем на реальном сервере (производственном окружении).
Так что одна из причин, почему вы не должны использовать 'local' => array(gethostname())
является то, что это сделает вашу среду local
независимо от того, где вы запускаете это (ваш локальный компьютер, тестирование среды или производства).
Это предпочтительный метод определения env
$env = $app->detectEnvironment(function() {
return getenv('APP_ENV') ? : 'production';
});
Поэтому, если в вашем файле VHOST не установлена переменная окружения, по умолчанию она будет производственной.
Но так как у вас нет возможности указать переменные env, я предлагаю вам придерживаться решения Богдана.
Для докер-прода. развертывание, это было добавлено для запускаartisan migrate
первый раз.
BASEDIR="/foo/bar/storage"
if [ ! -f "$BASEDIR/.artisan_init" ]; then
# ...
{ printf "yes\n"; } | ./artisan migrate
date -I > "$BASEDIR/.artisan_init"
# ...
fi
Если нужно ответить на несколько вопросов, вы можете накопить ответы:
{ printf "yes\n"; printf "foo\n"; printf "bar\n"; } | ./artisan migrate