{"id":23248549,"url":"https://github.com/raulpe7eira/tic_tac_toe","last_synced_at":"2026-04-26T23:31:30.546Z","repository":{"id":130731052,"uuid":"89235702","full_name":"raulpe7eira/tic_tac_toe","owner":"raulpe7eira","description":"Laboratório de Validação de Conhecimento para Pluga","archived":false,"fork":false,"pushed_at":"2017-04-27T08:09:40.000Z","size":265,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T01:16:31.302Z","etag":null,"topics":["game","gem","hiring","hiring-challenge","pluga","rspec","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raulpe7eira.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-24T12:06:41.000Z","updated_at":"2024-11-21T13:20:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"53445066-1f85-4813-9ea1-4e311b3c7bf9","html_url":"https://github.com/raulpe7eira/tic_tac_toe","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/raulpe7eira/tic_tac_toe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raulpe7eira%2Ftic_tac_toe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raulpe7eira%2Ftic_tac_toe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raulpe7eira%2Ftic_tac_toe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raulpe7eira%2Ftic_tac_toe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raulpe7eira","download_url":"https://codeload.github.com/raulpe7eira/tic_tac_toe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raulpe7eira%2Ftic_tac_toe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32317163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"ssl_error","status_checked_at":"2026-04-26T23:26:25.802Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game","gem","hiring","hiring-challenge","pluga","rspec","ruby"],"created_at":"2024-12-19T08:14:20.345Z","updated_at":"2026-04-26T23:31:30.541Z","avatar_url":"https://github.com/raulpe7eira.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tic-Tac-Toe (vlab for [https://pluga.co/](https://pluga.co/))\n\nUm pequeno projeto para testar minhas habilidades.\n\n![frontend-scshot](../master/scshot/frontend-scshot.png)\n\n## Instalação\n\n### Pré-requisitos\n\nTer instalado localmente (apenas p/ Desenvolvimento e Teste):\n- [Git](https://git-scm.com/)\n- [Ruby](https://ruby-lang.org)\n- [Bundle](http://bundler.io/)\n- [RubyGems](https://rubygems.org/)\n\n### Instalando dependências\n\n```bash\n$ git clone https://github.com/raulpereira/tic_tac_toe.git\n$ cd tic_tac_toe\n$ bundle install\n```\n\n## Subir \u0026 Rodar\n\n### Ambiente de desenvolvimento\n\n```bash\n$ ruby -ILib bin/console\n```\n![dsv-scshot](../master/scshot/dsv-scshot.png)\n\n### Ambiente de teste\n\n```bash\n$ rspec\n```\n\n![tst-scshot](../master/scshot/tst-scshot.png)\n\n### Ambiente de produção\n\n`Os testes precisam ser finalizados para geração de uma Gem pública` :disappointed_relieved:\n\n## Considerações\n\n### Linguagem\n\n**[Ruby](https://ruby-lang.org)**: Foi uma escolha determinada pelo desafio, decidi encarar mesmo tendo pouca domínio com essa linguagem e mais uma vez tive boas surpresas no estudo de caso.\n\n### Estrutura\n\n**[RubyGems](https://rubygems.org/)**: A primeira decisão para organizar o código inicial foi coloca-lo em uma nova Gem, o intuito inicial era apenas usar alguma Gem para testes automáticos, mas depois gostei da idéia de publicar o código numa conta pública, além de forçar a organização inicial.\n\n### Frontend\n\n**[ANSI Color codes](https://en.wikipedia.org/wiki/ANSI_escape_code)**: Para melhorar a interface com o usuário, resolvi adotar cores e criar um simulador para a jogada do computador, porém essa parte especificamente deveria estar mais isolada do código, esta muito misturado com a lógica do jogo, como melhoria da organização, separaria toda interface até para implementar internacionalização ou customizações de cores por parte do usuário.\n\n### Testes\n\n**[RSpec](http://rspec.info/)**: Toda a estrutura criada para as peças e jogadores foi coberta, única entidade que ficou faltando cobrir foi o jogo em si - `game.rb` - fator que determinou a não publicação do código em produção no momento.\n\n## Conclusão\n\nApesar de não ter concluído o teste como gostaria, aprendi diversos conceitos que a linguagem proporciona e que não tinha reparado nos projetos [Rails](http://rubyonrails.org/) que havia desenvolvido anteriormente. Outro ponto positivo deste trabalho foi o primeiro contato com ferramentas de testes automatizados para a linguagem, sem dúvida este foi o tópico que mais dediquei meu tempo e graças a esta dedicação encontrei alguns bugs que iriam passar desapercebido. Continuo feliz no estudo da linguagem, sinal que continuará sendo minha fonte de estudos atual.\n\n**VAMOS QUE VAMOS!** :muscle:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraulpe7eira%2Ftic_tac_toe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraulpe7eira%2Ftic_tac_toe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraulpe7eira%2Ftic_tac_toe/lists"}