Skip to content

Instantly share code, notes, and snippets.

@snick
Last active May 31, 2017 14:17
Show Gist options
  • Save snick/66f7de42b9932f0b83f10cd3aa402d77 to your computer and use it in GitHub Desktop.
Save snick/66f7de42b9932f0b83f10cd3aa402d77 to your computer and use it in GitHub Desktop.

Использования APP_ENV

  1. tech/web/app/Bootstrap/ConfigureLogging.php#67 Если APP_ENV не prerelease или production, то в сентри ничего не пишем:

    if (!in_array(env('APP_ENV'), ['production', 'prerelease'], true)) {
      return;
    }

    Тут три варианта:

    • в зависимости от APP_ENV использовать разный endpoint до sentry
    • тегировать ивент значением из APP_ENV
    • отвязать отправку в sentry от APP_ENV и получать снаружи как SENTRY_ENDPOINT
  2. tech/web/app/Services/ProductNotificationService.php#19 Если APP_ENV не production, то к заголовку письма добавляется окружение:

    if ($this->env !== static::PRODUCTION_ENV) {
      $subject = $this->buildSubjectWithEnv(ucfirst($this->env), $subject);
    }

    Это норм, оставляем. Можно подумать о том, чтобы получать "снаружи" email для отправки писем

  3. tech/web/bfgapps/market/app/Console/Commands/DataExport/FileExporter.php#46 Если APP_ENV - local, тогда файлы экспорта пишем в локальные директории, иначе пишем в S3-bucket (маска S3_INVESTOR_EXPORTS_MASK).

    Это норм, оставляем. Можно подумать о том, чтобы доработать класс, разворачивающий маски так, чтобы он поддерживал локальные хранилища

  4. tech/web/bfgapps/market/app/Http/Controllers/ApplicationController.php#133 Если APP_ENV production или prerelease, передаем фронтенду endpoint sentry для отсылки сообщений:

    if (in_array(env('APP_ENV'), ['production', 'prerelease'], true)) {
      $sentryDsn = Config::get('app.publicSentry.' . env('APP_ENV') . '.tech');
    }

    Выпиливать и сводить к п. №1

  5. tech/web/bfgapps/market/app/Http/Controllers/ExportController.php#196 Если APP_ENV - local, отдаем файл из локальной директории внутри www-root, иначе из s3-бакета (маска S3_INVESTOR_EXPORTS_MASK)

    Сводить к п. №3

  6. tech/web/bfgapps/market/app/Services/DataProviders/CalculatorService.php#90 Если APP_ENV prerelease или local, тогда к результатам работы калькулятора добавляем 2 поля: traceId и calculatorExecuteCmd:

    if (in_array(env('APP_ENV'), ['prerelease', 'local'], true)) {
      $trace = App::make('Trace');
      $traceId = $trace->traceId;
      $result['traceId'] = $traceId;
      $result['calculatorExecuteCmd'] = $cmd;
    }

    Добавлять traceId всегда

  7. tech/web/bfgapps/mcc/app/OrganizationsMasterList.php#227 Если APP_ENV local или testing, меняем адрес Lt на http://lp.l.bfg-dev.com:

    if (in_array($appEnv, [ 'local', 'testing' ], true)) {
      return 'http://lp.l.bfg-dev.com';
    }

    Выпиливать. Таких адресов давно уже нет

  8. tech/web/bfgapps/mcc/app/Console/Commands/Monitoring/UpdateAwsMetrics.php#26 Если APP_ENV не production, останавливаем обработку данной команды:

    if (env('APP_ENV') !== 'production') {
      // Не ломаем продакшн
      return 0;
    }

    Нужно переделать на if (env('APP_ENV') == 'local') То есть, управление автоскейлом не происходит только локально, а в окружениях производится в соответствии с собственными ресурсами и настройками

  9. tech/web/bfgapps/mcc/app/DataProcessing/SurrogateRepaymentService.php#24 Если APP_ENV - testing, отключаем кеширование разрешенных периодов для суррогатных платежей:

    if ($env === 'testing') {
      $force = true;
    }

    Имхо это нужно сделать отдельной явной настройкой – что-то вроде surrogatePeriodCachingEnabled Если это вообще нужно

  10. tech/web/config/database.php#286 Если APP_ENV не равно production, local, prerelease - используем тестовое подключение к БД:

    $cb = $getTestingConnection;
    if (in_array($env, ['production', 'local', 'prerelease'], true)) {
        $cb = $getWorkingConnection;
    }

    Выпиливать. Все подключения передаются "снаружи" и контролируются вне приложения. Дополнительный слой вроде этого не нужен

  11. tech/web/config/mail.php#10 Если APP_ENV не production, тогда используем Mailcatcher для перехвата всех писем:

    if (!in_array(env('APP_ENV'), ['production'], true)) {
        $bfgMailConfig = [
            'port' => 1025,
            'host' => 'mailcatcher',
            'driver' => 'smtp',
            'encryption' => ''
        ];
    }

    Немного доработать так, чтобы если снаружи передана настройка MAILCATCHER_ENABLED, то использовать MAILCATCHER_HOST и MAILCATCHER_PORT

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment