Rails Gambit — это образовательный проект по реализации онлайн платформы для совместной игры в шахматы и не только. Он создан с целью изучения Ruby on Rails студентами. Упор делается на применение передовых подходов в современной веб-разработке, погружение в процесс "на всю глубину" включая обслуживание серверов, доставку продуктового кода и популяризацию шахмат.
- Регистрация/Авторизация
- Профиль игрока
- Рейтинг игрока
- Шахматные упражения
- Панель администратора
- Сетевая игра вдвоём
- Загрузка/Выгрузка PGN и FEN
- Сохранение истории партии
- Чат
- Приглашения
- Авторизация через VKontakte
- Авторизация через Google
Подробнее в INFRASTRUCTURE.md.
RubyNode.jsYarnBundlerPostgreSQLRedisDockerVS CodeилиRubyMine
Если вы мало знакомы с языком Ruby, то можете подчерпнуть знаний из следующих источников:
- Getting Started with Rails — официальный гайд от разработчиков Ruby on Rails. Пошаговое создание простенького блога со статьями и комментариями. Есть русская версия от комьюнити, но там может быть устаревшая версия гайда.
- Ruby on Rails 6/7: уроки — плейлист с хорошими уроками по Ruby on Rails на русском языке.
- Turbo Rails Tutorial — гайд по Hotwire, которые используются для обновления данных на странице без её перезагрузки.
- Codewars — сайт с задачками по различным языкам программирования, в том числе и по Ruby.
-
Устанавливаем зависимости приложения:
bundle install yarn install
-
Настраиваем доступ к БД через переменные окружения в файлах
database.ymlиcable.yml. -
Теперь необходимо создать базу данных, мигрировать схему веб-приложения и заполнить БД тестовыми данными:
rails db:create rails db:migrate rails db:seed
-
Запустить приложение:
bin/dev
В качестве фреймворка тестирования используется RSpec, в частности rspec-rails. Для запуска тестов достаточно выполнить команду:
rspecРезультаты тестирования в формате JUnit появятся в файле junits/rspec.xml.
Для рассчёта покрытия кода используется библиотека SimpleCov. Результаты выводятся в двух форматах: в виде статического HTML сайта в папке coverage/tests/index.html и в терминале.
Пример вывода в терминал:
Run options: exclude {:capybara=>true}
ApplicationRecord
is expected to be
is expected to be a kind of Class
Finished in 0.00907 seconds (files took 1.19 seconds to load)
2 examples, 0 failures
Coverage report generated for tests to /home/jerry/devel/gitlab/rails-gambit/coverage/tests. 3 / 26 LOC (11.54%) covered.
COVERAGE: 11.54% -- 3/26 lines in 8 files
+----------+----------------------------------------------+-------+--------+-------------+
| coverage | file | lines | missed | missing |
+----------+----------------------------------------------+-------+--------+-------------+
| 0.00% | app/channels/application_cable/channel.rb | 4 | 4 | 1-4 |
| 0.00% | app/channels/application_cable/connection.rb | 4 | 4 | 1-4 |
| 0.00% | app/controllers/application_controller.rb | 2 | 2 | 1-2 |
| 0.00% | app/jobs/application_job.rb | 2 | 2 | 1, 7 |
+----------+----------------------------------------------+-------+--------+-------------+
2 file(s) with 100% coverage not shownВ CONTRIBUTING.md собраны правила и рекомендации для разработчиков. Ждём и тебя тоже!
