Capivareo é um sistema de controle de atividades e notas desenvolvido como parte da matéria MAC0218 - Técnicas de Programação do IME-USP no primeiro semestre de 2019.
O projeto foi escrito em Ruby on Rails. A versão do Ruby usada pelo projeto é 2.6.2
(verifique o arquivo .ruby-version
). Recomendamos o uso de rbenv. Note que ruby-build também é necessário para a instalação de diferentes versões do Ruby.
Uma maneira simples de utilizá-lo:
$ rbenv install 2.6.2
$ rbenv global 2.6.2
$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18]
Veja rbenv local
caso não deseje alterar a versão do sistema.
Para gerenciar as gemas do projeto, utilizamos Bundler. É muito conveniente pois permite que o sistema contenha a mesma gema em diversas versões, mas garante que a aplicação utilize as gemas corretas na versão correta.
Na raiz do projeto, basta rodar:
gem install bundler
bundle install
ALERTA: Vamos preceder diversos comandos com bundle exec
, para garantir que as gemas corretas serão utilizadas.
O frontend da aplicação foi escrito em React e portanto tem algumas depedências em Javascript. NodeJS numa versão >= 10
é necessário.
$ node -v
v11.12.0
ALERTA: Em alguns sistemas o binário do node é chamado de nodejs
.
Para gerenciar os pacotes em Javascript, utilizamos Yarn.
Na raiz do projeto, basta rodar:
yarn install
O banco de dados utilizado no momento é o PostgreSQL.
O projeto se conecta com o banco em localhost:5432
, padrão do PostgreSQL.
$ psql --version
psql (PostgreSQL) 11.2
Na raiz do projeto, basta rodar:
bundle exec rake db:create
Conforme o esquema do banco vai sendo modificado, várias migrações são criadas db/migrate
. Para aplicar todas as migrações, basta rodar na raiz do projeto:
bundle exec rake db:migrate
Para facilitar o desenvolvimento, há uma semente com valores padrões para o banco em db/seeds.rb
. Para aplicar, basta rodar:
bundle exec rake db:seed
USE COM MUITO CUIDADO, NÃO TEM VOLTA! Se for necessário apagar completamente o banco, basta rodar na raiz do projeto:
bundle exec rake db:drop
Será necessário criar e migrar o banco novamente.
Finalmente, se tudo foi instalado corretamente, basta rodar na raiz do projeto:
bundle exec rails s
e verificar que tudo está funcionando acessando localhost:3000
.
Enquanto em desenvolvimento, todos os e-mails são enviados via smtp
para localhost:1025
. Para acessar os emails de forma amigável, usamos mailcatcher.
Para testes, utilizamos RSpec com auxílio do FactoryBot para facilitar a criação de objetos. Os testes e as factories se encontram dentro do diretório spec
.
Para rodar os testes, basta rodar
bundle exec rake spec
Utilizamos SimpleCov para verificar a cobertura do código pelos testes. Após rodá-los, o relatório é gerado em coverage/index.html
.
O sistema é muito simples de ser utilizado. É necessário fazer login para ter acesso as funcionalidades. Há duas interfaces: uma para alunos e outra para professores. Descrevemos brevemente as funcionalidades de cada um.
Alunos podem se matricular em disciplinas e ver as notas de suas atividades. Há um aluno padrão no banco (supondo que se rodou rake db:seed
).
email: [email protected]
senha: 123456
Na página inicial, é possível se matricular em novas disciplinas pelo botão Adicionar disciplinas
. Para ver as notas das atividades de uma disciplina, basta clicar no seu cartão correspondente. As disciplinas ficam separadas por semestres, que pode ser escolhido na página inicial.
Professores podem criar, editar e remover disciplinas. Dentro de cada disciplina, podem criar, editar e remover atividades, além de dar notas para cada aluno. Há um professor padrão no banco (supondo que se rodou rake db:seed
).
email: [email protected]
senha: 123456
Uma disciplina é criada na página inicial no botão Nova disciplina
. As disciplinas são separadas por semestres, que pode ser escolhido na página inicial. Para editar, remover ou gerenciar as atividades de uma disciplina, basta clicar no seu cartão correspondente.
Uma atividade pode ser criada pelo botão Nova atividade
na página de uma disciplina. Para editar ou remover uma atividade, basta clicar no cartão da atividade na página da disciplina correspondente. Há um modo de correção na página atividade, que destrava os campos Nota de todos os alunos matriculados. Para que as alterações da correção tenham efeito, é necessário clicar no botão Salvar correção
. Se um aluno não aparece na lista, é porque não se matriculou na disciplina.