Skip to content
main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
app
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Hexlet SICP

github action status Maintainability Codacy Badge codecov

Deploy

Читать на другом языке: English

Hexlet SICP — это сервис для тех, кто изучает книгу "Структура и интерпретация компьютерных программ". Отслеживайте свой прогресс и сравнивайте себя с другими в глобальной таблице лидеров.

Предварительно рекомендуем прочесть статью Как изучать Структуру и Интерпретацию Компьютерных Программ (SICP)

Участие в разработке

Известные ошибки

Q: Ошибка Illuminate\Session\TokenMismatchException: CSRF token mismatch.

A: Сбросить кеш конфига php artisan config:clear

Предварительные требования

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

Установка

Локальная установка

Для запуска на локальном интерпретаторе и SQLite:

make setup # первоначальная установка
make start # запуск сервера http://127.0.0.1:8000/
make test # запуск тестов

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

  1. Установить зависимости и подготовить конфигурационный файл

    make setup
  2. Указать параметры подключения к БД в файле .env

    DB_CONNECTION=pgsql
    DB_HOST=localhost
    DB_PORT=54320
    DB_DATABASE=postgres
    DB_USERNAME=postgres
    DB_PASSWORD=secret
    
  3. Запустить контейнер с БД и сгенерировать записи

    make compose-start-database
    make db-prepare
  4. Запустить локальный веб-сервер

    make start

Установка в Docker

  1. Подготовить файл .env

    make env-prepare
  2. Указать параметры подключения к БД в файле .env

    DB_CONNECTION=pgsql
    DB_HOST=database
    DB_PORT=5432
    DB_DATABASE=postgres
    DB_USERNAME=postgres
    DB_PASSWORD=secret
    
  3. Собрать и запустить приложение

    make compose-setup # собрать проект
    make compose-start # запустить сервер http://127.0.0.1:8000/
    make compose-bash  # запустить сессию bash в docker-контейнере
    make test          # запустить тесты в docker-контейнере

Стандарты кодирования и прочие правила

  • Пулреквесты должны быть настолько маленькими, насколько это возможно с точки зрения здравого смысла
  • Весь код должен соответствовать стандартам кодирования PSR12 и Laravel (мы так же используем некоторые собственные правила, чтобы усложнить жизнь разработчика)
  • Пулреквест должен проходить все проверки CI
  • Все экшены контроллеров должны быть покрыты тестами (Начинаем писать тесты (правильно))
  • Формы делаются с помощью laraeast/laravel-bootstrap-forms
  • В подавляющем большинстве используется ресурсный роутинг. Что под него не подходит, сначала обсуждается (такое бывает крайне редко)
  • Тексты только через локали
  • Чтобы включить логирование Rollbar, необходимо установить переменную LOG_CHANNEL=rollbar и ROLLBAR_TOKEN= (документация)
  • Чтобы добавить упражнение, необходимо добавить его содержимое (код или картинка) по пути 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
  2. Запустить тесты с альтернативным профилем DB_CONNECTION=pgsql_test make test

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

Для хуков требуется локальный NodeJS

make setup-git-hooks

Hexlet Ltd. logo

Этот репозиторий создан и поддерживается командой и сообществом образовательного проекта Hexlet. Подробнее о Hexlet

See most active contributers on hexlet-friends.

About

Hexlet SICP

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages