Introdução

Neste tutorial, vamos explorar a linguagem de programação Crystal, conhecida por sua sintaxe simples e desempenho eficiente, que se assemelha ao Ruby. Vamos nos aprofundar nos principais frameworks e ferramentas que tornam o desenvolvimento em Crystal ágil e poderoso. Em particular, abordaremos frameworks como Amber e Lucky, que facilitam a criação de aplicações web robustas. A intenção é fornecer uma visão abrangente das funcionalidades da linguagem, das bibliotecas mais utilizadas e, ao longo do nosso guia, fornecer exemplos práticos que o ajudarão a começar suas próprias aplicações em Crystal. Se você está buscando alternativas ao mundo de desenvolvimento baseado em Java ou outras linguagens, este tutorial é perfeito para você. Por meio de uma abordagem hands-on, abordaremos desde a instalação do ambiente até a construção e o teste de um aplicativo web simples, que utiliza as melhores práticas recomendadas para fazer do seu desenvolvimento uma experiência agradável e produtiva.

Etapas

  1. Instalação do Ambiente de Desenvolvimento

    A primeira etapa é instalar a linguagem Crystal em sua máquina. Você pode encontrar instruções específicas no site oficial do Crystal. Para sistemas baseados em Unix, você pode usar o gerenciador de pacotes Homebrew (para macOS) ou outras ferramentas semelhantes para sua distribuição Linux.

    commands
    # Instalar utilizando Homebrew no macOS
    brew install crystal
    # Ou utilizando o script de instalação no Linux
    curl -sSL https://get.crystal-lang.org/sh | sh

  2. Criação de um Novo Projeto com Amber

    Agora, vamos criar um novo projeto utilizando o Amber, que é um dos frameworks mais populares para desenvolvimento web em Crystal. Use o comando a seguir para gerar um novo projeto Amber, substituindo ‘meu_projeto’ pelo nome desejado.

    commands
    # Instalar o Amber CLI
    curl -O https://raw.githubusercontent.com/amberframework/amber/master/tools/install.sh
    bash install.sh
    # Criar um novo projeto Amber
    amber new meu_projeto
    # Acesse a pasta do projeto
    cd meu_projeto

  3. Estrutura do Projeto Amber

    Após a criação do projeto, você verá a estrutura de diretórios padrão criada pelo Amber. Explore as pastas como ‘src’, ‘config’ e ‘public’ para entender como o Amber organiza seu código. Cada um desses diretórios desempenha um papel crucial no funcionamento da aplicação.

    text
    A estrutura do projeto deve incluir diretórios como:
    - src: onde o código fonte da aplicação vive.
    - config: onde estão os arquivos de configuração da aplicação.
    - public: onde os arquivos estáticos, como JavaScript e CSS, são armazenados.

  4. Implementação de um Modelo de Dados

    Vamos criar um modelo de dados simples chamado ‘Produto’. Para isso, crie um arquivo chamado `produto.cr` na pasta src e defina a estrutura da nossa entidade.

    produto.cr
    class Produto
      @[id: Int32]
      @[field: String]
      @[price: Float64]
    
      def initialize(@id : Int32, @field : String, @price : Float64)
      end
    end

  5. Criando um Controlador

    Agora, vamos criar um controlador para gerenciar os produtos. Crie um arquivo chamado `produtos_controller.cr` na pasta src/controllers e implemente as ações de CRUD básicas.

    produtos_controller.cr
    class ProdutosController < Amber::Controller
      action index do
        render :index
      end
    
      action new do
        render :new
      end
    
      action create do
        produto = Produto.new(params[:id], params[:field], params[:price])
        # Lógica para salvar produto
        redirect_to "/produtos"
      end
    end

  6. Configuração de Rotas

    Configure as rotas da sua aplicação no arquivo `routes.cr` para garantir que os caminhos corretos sejam mapeados para as ações dos controladores que você criou.

    routes.cr
    Amber::Routing::Router.draw do
      get "/produtos", to: ProdutosController.index
      get "/produtos/new", to: ProdutosController.new
      post "/produtos", to: ProdutosController.create
    end

  7. Executando a Aplicação

    Após implementar todos os componentes necessários, você pode iniciar sua aplicação utilizando o Amber CLI. Isso iniciará o servidor local para que você possa testar as funcionalidades da aplicação no seu navegador.

    commands
    # Iniciar a aplicação Amber
    amber run
    # Abra o navegador e acessa a aplicação em
    http://localhost:3000/produtos

  8. Implementação de Testes

    Para garantir que sua aplicação funcione conforme o esperado, é importante escrever testes. O Amber possui uma estrutura de testes embutida que você pode usar. Crie um arquivo de teste chamado `produtos_controller_spec.cr` em `spec/controllers`.

    produtos_controller_spec.cr
    require "spec_helper"
    
    describe ProdutosController do
      describe "GET /produtos" do
        it "deve retornar um status 200" do
          get "/produtos"
          expect(response.status).to eq(200)
        end
      end
    end

  9. Executando os Testes

    Finalmente, você pode executar seus testes para garantir que tudo está funcionando corretamente. Isso pode ser feito com o comando Amber, que incluirá o executamento dos testes definidos.

    commands
    # Executar os testes
    amber spec

Conclusão

Neste tutorial, exploramos como usar a linguagem Crystal e o framework Amber para criar uma aplicação web simples, desde a configuração do ambiente até a implementação e teste de funcionalidades. Vimos como cada componente interagiu para formar uma aplicação robusta e rápida. Esperamos que ao final deste tutorial, você tenha adquirido conhecimento suficiente para começar a desenvolver suas próprias aplicações com Crystal. Sinta-se à vontade para explorar mais sobre o Amber e outros frameworks como Lucky para ampliar suas habilidades nesta linguagem inovadora.

Hashtags

#Crystal #Amber #Programming #WebDevelopment #TestDrivenDevelopment