Giter VIP home page Giter VIP logo

hexlet-sicp's Introduction

Maintainability Codacy Badge codecov build status github action status

hexlet-sicp

Осилятор СИКП — сервис, в котором есть рейтинг тех, кто проходит СИКП, и каждый отмечает, что он прошёл.

Участие

Requirements

Проверить зависимости PHP можно командой composer check-platform-reqs

Setup или Setup in docker

$ make setup
$ make start # start server http://127.0.0.1:8000/
$ make test # run tests

Запуск с БД PostgreSQL (разворачивается в docker-контейнере)

  1. Установить зависимости и подготовить конфигурационный файл
$ make env-prepare
$ make install
$ make key
  1. Указать параметры подключения к БД в файле .env
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=54320
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
  1. Запустить контейнер с БД и сгенерировать записи
$ make compose-postgres-start
$ make config-clear
$ make db-prepare
  1. Запустить локальный веб-сервер
$ make start

Setup in docker

  1. Подготовить .env файл
$ make env-prepare
  1. Указать параметры подключения к БД в файле .env
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=hexlet_sicp_development
DB_USERNAME=postgres
DB_PASSWORD=secret
DB_SCHEMA=public
  1. Собрать и запустить приложение
$ make compose-setup # build project
$ make compose-start # start server http://127.0.0.1:8000/
$ make compose-bash  # start bash session inside docker container
$ make test          # run tests inside docker container

Стандарты

  • Пулреквесты должны быть настолько маленькими, насколько это возможно с точки зрения здравого смысла
  • Весь код должен соответствовать стандартам кодирования PSR и Laravel
  • Пулреквест должен проходить все проверки

Прикладные вещи

  • Все экшены контроллеров должны быть покрыты тестами
  • Формы делаются с помощью netojose/laravel-bootstrap-4-forms
  • В подавляющем большинстве используется ресурсный роутинг. Что под него не подходит, сначала обсуждается (такое бывает крайне редко)
  • Тексты только через локали
  • Чтобы включить логирование Rollbar, необходимо установить переменную LOG_CHANNEL=rollbar и ROLLBAR_TOKEN= (docs)
  • Чтобы добавить упражнение, необходимо добавить его содержимое (код или картинка) по пути resources/views/exercise/listing/#_#.blade.php, а текстовое описание в resources/lang/{locale}/sicp.php под ключем exercises.#.# на соответствующем языке.
  • Для генераций файлов-помощников (для автодополнения) используйте make ide-helper
  • Изучите список доступных команд php artisan!

Настройка авторизации через GitHub

Зарегистрируйте приложение на GitHub (подробнее https://developer.github.com/apps/about-apps/). Для этого:

  • В меню учетной записи GitHub выберите пункт “Settings”
  • В открывшемся окне в панели навигации, справа, выберите “GitHub Apps”, затем нажмите кнопку “New GitHub App”
  • В открывшейся форме в поле "GitHub App name" введите название приложения (например, Hexlet-SICP)
  • В поле Homepage URL - адрес ресурса (например, https://hexlet-sicp.herokuapp.com)
  • В поле "User authorization callback URL" введите полный URL-адрес для перенаправления после того, как пользователь авторизует приложение на GitHub. (например, https://hexlet-sicp.herokuapp.com/oauth/github/callback)
  • В поле "Webhook URL" укажите URL-адрес, по которому будут отправляться события (например, https://hexlet-sicp.herokuapp.com/oauth/github/callback)
  • Откройте права на получение информации о e-mail пользователя (User permissions->Email addresses->Read only)
  • Сохраните данные регистрации приложения (кнопка "Create GitHub App")
  • На открывшейся странице приложения скопируйте Client ID и Client secret
  • Cгенерируйте закрытый ключ (кнопка Generate a private key)

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

  • Перейдите на вкладку "Settings"
  • В настройке "Config Vars" добавьте переменные GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET и GITHUB_URL_REDIRECT указав для них соответвенно значения Client ID, Client secret и User authorization callback URL
  • После чего выпольните сброс кеша конфигурации: heroku run php artisan config:cache

Альтернативный профиль БД для тестирования

  1. Создать отдельную тестовую базу postgres.
    Настройки параметров подключения можно посмотреть в секции pgsql_test конфигурации config/database.php Пример создания тестовой базы "с нуля":
sudo apt install postgresql
sudo -u postgres createuser --createdb $(whoami)
sudo -u postgres createuser hexlet_sicp_test_user
sudo -u postgres psql -c "ALTER USER hexlet_sicp_test_user WITH ENCRYPTED PASSWORD 'secret'"
createdb hexlet_sicp_test
  1. Запустить тесты с альтернативным профилем DB_CONNECTION=pgsql_test make test

Добавить пре-комит хук

$ git config core.hooksPath .githooks

Видео созвонов

Hexlet Ltd. logo

This repository is created and maintained by the team and the community of Hexlet, an educational project. Read more about Hexlet (in Russian).

FAQ

Q: Ошибка Illuminate\Session\TokenMismatchException: CSRF token mismatch. A: Сбросить кеш конфига php artisan config:clear

hexlet-sicp's People

Contributors

alexeyshobanov avatar alexp11223 avatar arkadiy93 avatar ashikov avatar badta5te avatar baradusov avatar bsv-hub avatar burenkov-anton avatar dependabot-preview[bot] avatar dependabot[bot] avatar econavi avatar enmalafeev avatar fessan avatar fey avatar geozhur avatar grozwalker avatar influxow avatar laserroy avatar malcom1986 avatar mityadementiy avatar mokevnin avatar plugin73 avatar rkozlov95 avatar romanoffivan avatar solar05 avatar ssssank avatar vikzh avatar x0xl0ma avatar yoffic avatar zhabinka avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.