Este projeto inclui um stack de ferramentas úteis para utilização do plugin de tipo de questão Moodle chamado Coderunner. Com essa pilha, além dos desenvolvedores poderem validar novas libs, o próprio professor pode subir um ambiente local, com baixa latência, para elaborar as questões que posteriormente poderiam ser importadas para o Moodle da instituição.
- Aplicação Moodle (ref. Bitnami) com database MariaDB (disponível em https://localhost/)
- Instância de banco de dados Postgres com web PGAdmin (disponível em http://localhost:16543/)
- Intância de banco ArangoDB(inclui webconsole) (disponível em http://localhost:8529/)
- Instância da sandbox JobeServer ( disponível em http://localhost:4000/jobe/index.php/restapi/languages)
As credenciais de acesso são definidas no env_file .env disponível na raíz do projeto.
O usuário de acesso padrão do Moodle usuário=user, senha=bitnami
Para subir a stack é necessário ter pré-instalados o Docker e Docker-Compose. Baixar o projeto e executar o comando dentro da raiz:
docker-compose up -d
Pode ser necessário dar permissão de escrita no diretório mariadb que será criado
Para visualizar os logs do docker-compose, execute:
docker-compose logs -f
- Definir o tipo de questão como sendo python3
- Configurar a questão para template de usuário, informando um nome especifico para o novo tipo de questão. Cuidado para não utilizar nomes já disponíveis.
- No trecho abaixo, informar os dados de conexão ao servidor nos campos user, password, port e host.
conn = CodeRunnerPG(
"dbname={{database}} user= <informar usuário> password=<informar senha> port=5432 host=postgres-coderunner")
- Nas questões que irão utilizar o novo template, no campo Template params, informar as configurações específicas:
- database: Nome da base
- queryType: SELECT, UPDATE, INSERT, DELETE, DDL e PLSQL (este último pode ser utilizado para comandos DDL que requerem validação).
- randomSchema: A resposta do usuário será criada em um schema aleatório
- required_commands: Lista de comandos exigidos pela questão na resposta.
{
"database": "lbdi_minimercado_db",
"queryType": "PLSQL",
"randomSchema": "False",
"required_commands": [
]
}
- Para a execução de blocos anônimos cuja resposta baseia-se na saída de raise notice,
substituir pela chamada ao procedimento
moodle.p_message
. Tal recurso pode ser usado em qualquer questão que tenha código de validação específico.
create schema moodle;
create unlogged table moodle.event_messages(
id bigserial not null primary key,
message text
);
create or replace procedure moodle.p_message(p_message text) as
$$
begin
insert into moodle.event_messages(message) values (p_message);
end;
$$ language plpgsql;
- Definir o tipo de questão como sendo nodejs
- Configurar a questão para template de usuário, informando um nome especifico para o novo tipo de questão. Cuidado para não utilizar nomes já disponíveis.
- Escolher o novo template criado na lista de tipos quando for criar novas questões.