Introdução
Neste tutorial, vamos explorar o Crystal, uma linguagem de programação moderna e leve, que se inspira no Ruby, mas com foco em desempenho e segurança. O framework Amber será nosso ponto de partida para construir aplicações web performáticas. Você aprenderá a configurar o ambiente, criar uma API, implementar boas práticas de desenvolvimento e utilizar ferramentas de integração contínua para garantir que seu código permaneça robusto e mantenha a qualidade. Este guia é para desenvolvedores que desejam expandir seu conhecimento em Crystal e criar aplicações web rápidas e escaláveis utilizando o Amber.
Etapas
Configuração do Ambiente de Desenvolvimento
Primeiro, você precisa ter o Crystal instalado em sua máquina. Acesse o site oficial do Crystal para instruções de instalação. Após a instalação, utilize o comando `crystal -v` para verificar se a instalação foi bem-sucedida.
commands# Verificar a versão do Crystal instalada
crystal -vCriação do Projeto Amber
Utilize o comando Amber para gerar um novo projeto. Isso cria a estrutura básica de diretórios e arquivos para a sua aplicação web.
commands# Criar um novo projeto Amber chamado 'my_app'
amber new my_app
# Navegar para o diretório do projeto
cd my_appConfiguração do Banco de Dados
No arquivo `config/database.yml`, configure os parâmetros de conexão com o banco de dados. Iremos usar o SQLite para simplicidade nesta demonstração.
database.ymldevelopment: adapter: sqlite3 database: db/development.sqlite3
Criação do Modelo `Produto`
Agora, vamos criar um modelo chamado `Produto` que representará os produtos em nossa aplicação. Utilize o comando Amber para gerar o modelo e as migrações necessárias.
commands# Gerar o modelo Produto
amber generate model Produto nome:String preco:Decimal
# Executar as migrações para criar a tabela no banco de dados
amber db migrateImplementação da API para Produtos
Agora, vamos criar uma controladora que irá gerenciar as operações CRUD para o modelo `Produto`.
ProdutoController.crclass ProductsController < ApplicationController @[Action] def index @produtos = Produto.all render JSON::from(@produtos) end @[Action] def create @produto = Produto.new(@params) if @produto.save render JSON::from(@produto), status: 201 else render JSON::from(@produto.errors), status: 422 end end @[Action] def show(@id : Int32) @produto = Produto.first(id: @id) if @produto render JSON::from(@produto) else render status: 404 end end ... # Implementar métodos de update e delete
Testes Unitários
Vamos configurar testes unitários para garantir que a nossa lógica de negócios funcione conforme o esperado. Crie uma classe de teste para o modelo `Produto`.
Produto_spec.crrequire "spec_helper" describe Produto do it "cria um novo produto" do produto = Produto.new(nome: "Teste", preco: 10.0) expect(produto.save).to be_true end it "não cria um produto sem nome" do produto = Produto.new(preco: 10.0) expect(produto.save).to be_false end end
Executando a Aplicação e Testes
Use o comando Amber para executar a aplicação e teste os endpoints utilizando ferramentas como Postman ou cURL.
commands# Compilar e executar a aplicação
amber run
# Executar os testes unitários
crystal speccurl_examples# Listar todos os produtos
curl -X GET http://localhost:3000/products
# Criar um novo produto
curl -X POST -H "Content-Type: application/json" -d '{"nome":"Novo Produto", "preco":99.99}' http://localhost:3000/products
Conclusão
Neste tutorial, você aprendeu como usar Crystal e o framework Amber para criar uma aplicação web performática. Passamos pela configuração do ambiente, criação de um modelo, implementação de uma API e testes unitários. Com essas habilidades, você está pronto para explorar aplicações web mais complexas usando Crystal e Amber, aproveitando a simplicidade e eficiência que essas ferramentas oferecem para desenvolvimento ágil.