Giter Site home page Giter Site logo

besieged_server's Introduction

README

Ruby version: 2.6.2

Configuration

Need to have pgcrypto extention to be installed

sudo apt-get install postgresql-contrib

Database creation

Create role with an account with sufficient rights:

psql -f setup_postgres.sql

Create database:

rake db:setup
rails db:migrate

Database initialization

How to run the test suite

rspec

Mutant

Check mutation code resistance:

RAILS_ENV=test bundle exec mutant -r ./config/environment --use rspec ClassName

Flog

Check code complexity

flog -g app

Services (job queues, cache servers, search engines, etc.)

Deployment instructions

mina setup
mina deploy

besieged_server's People

Contributors

haelle avatar

Watchers

James Cloos avatar

besieged_server's Issues

Notifications d'événements

Ajout de notifications lors d'actions :

  • nouveau joueur
  • machine de siège construite
  • catapult a tiré
  • bilan de la contre-attaque du château

Modèles:

  • camp_id
  • message
  • level (normal, important)
  • character
  • date de l'événement (created_at)

Points d'actions pour les personnages

  • 24 pts max,
  • +6 pts toutes les 6 heures,
  • les constructions sont effectuées depuis des buildings: CampHall (better name) et SiegeMachineWorkshop (les buildings ont des ongoing_works - repeatable: true/false)
  • les actions coûtent des points,

Route "shallow"

  • Revoir les routes et les nommages des actions pour plus de simplification.
  • Utiliser l'option shallow de Rails (possible ? beaucoup trop d'actions interdites)

Exemples (presque exhaustif) :

  • /castles/xx-yy : uniquement un show
  • POST /camps/xx-yy/siege_machines/??? à la place de build (et retour 201 ou 202 quand pas finit de construire avec un statut)

À voir comment on gère les constructions en cours et comment on commence les nouvelles ?

Renomage SiegeWeapon en SiegeMachine

SiegeWeapon est incorrect c'est SiegeMachine qu'il faut dire.

En profiter pour ajouter un nouveau champ "type/machine_type" (pb STI ?) pour intégrer Catapult/Balista/Trebuchet dès maintenant.

Les modèles ont des actions versionnées

une branche (feature/paper-trail) est disponible avec les changements.

Résultats

  • ça fonctionne très bien
  • les données sont dans un champs Postgres JSON
  • ça ne peut pas être exploité comme ça directement (même avec Grafana apparemment)
  • le mieux serait de pousser cette donnée dans un ELK

1. Les valeurs des modèles sont versionnées

Intégrer : https://github.com/paper-trail-gem/paper_trail/
https://github.com/sferik/rails_admin/wiki/Papertrail

2. Les actions des joueurs sont logguées

UPDATE : done in #3
Toutes les actions ont un coût de 1 et peuvent être faites X fois.
Créer un modèle PlayerAction du type: Time, Camp, Character, Action Type
=> Ça c'est Paper trail dans ongoing_work

Rails 6

Faire des essais pour lancer les tests car il y a un soucis possible avec les migrations.

1. Migration robuste

Protocole :

  • migrer en Rails 6
  • essayer de lancer les tests
  • créer une nouvelle migration
  • re-essayer de lancer les tests

Il est possible que ça tente de mettre à jour la BDD (via un load shema) et que ça échoue à cause des extensions PG (pas de doit admin donné volontairement).
Pb à cause schema_sha1 non mis à jour.

2. Rails 6

Regarder les nouveautés et les impacter / utiliser (parallel tests par exemple quoi configurer ?)

Supprimer `trailblazer-rails`

  1. Supprimer la gem trailblazer-rails je crois qu'elle n'apporte pas grand chose.
  • retirer config.trailblazer.enable_loader
  • elle gérait normalement des problèmes de nommage (User::Create à la place de User::Operation::Create)
  1. Supprimer trb nested en subprocesses ?

  2. Et passer en trb rc13 (ie master)

Trailblazer création des modèles

Des operations avec Contract : Build/Validate/Persist

2. Les actions des joueurs sont logguées

EDIT: finalement elles ne le sont plus pour le moment
Toutes les actions ont un coût de 1 et peuvent être faites X fois.
Créer un modèle PlayerAction du type: Time, Camp, Character, Action Type

La position des objets est numérotée

Dans un camp les armes de sièges (et le reste à venir) doivent être numéroté.

Ca permet de placer plus facilement les éléments : Create/Update/Delete ; avoir des "trous" dans les éléments quand l'un est détruit etc...

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.