Хватит ремесленнику спрашивать "Вы действительно хотите выполнить эту команду?"

Я новичок в использовании 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
Другие вопросы по тегам