Ruby Academy · Aula

Escrevendo o código

Organize uma gem.

Aula 2 de 413 etapas

Escrevendo o código é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.

Organizando o código de uma gema

Um bom código de gema é fácil de ler, fácil de carregar e organizado em um espaço de nomes para nunca entrar em conflito com outras bibliotecas. A principal ferramenta é um módulo de nível superior que envolve tudo.

  • Um módulo de espaço de nomes por gema.
  • Um arquivo por classe, seguindo o espaço de nomes.
  • Uma interface pública pequena.

O módulo de espaço de nomes

Envolva todas as classes em um módulo com o nome da sua gema. Isso impede que seu Client entre em conflito com o Client de outra pessoa.

module Greeter
  class Hello
    def message
      "Hi there"
    end
  end
end

puts Greeter::Hello.new.message

Convenção de nomes de arquivos

As ferramentas do Ruby esperam que os caminhos dos arquivos correspondam aos nomes das constantes:

  • Greeter fica em lib/greeter.rb.
  • Greeter::Hello fica em lib/greeter/hello.rb.

Essa convenção permite que os carregadores automáticos encontrem os arquivos automaticamente.

Carregando arquivos internos

O arquivo de entrada conecta tudo usando require_relative. Cada arquivo de classe é carregado uma vez, para que toda a biblioteca seja carregada com um único require 'greeter'.

Uma API pública clara

Exponha um pequeno conjunto de métodos que os usuários realmente chamam. Um padrão comum é usar métodos de conveniência no nível do módulo que delegam para classes internas.

module Greeter
  def self.say(name)
    "Hello, " + name + "!"
  end
end

puts Greeter.say("Ada")

Ocultando detalhes internos

Marque os métodos auxiliares como private para que não façam parte do seu contrato público. Tudo o que é público representa uma promessa aos usuários; mantenha essa interface intencional e pequena.

class Calculator
  def total(a, b)
    add(a, b)
  end

  private

  def add(x, y)
    x + y
  end
end

puts Calculator.new.total(2, 3)

Padrão de configuração

Muitas gemas oferecem um bloco de configuração para que os usuários possam definir opções uma única vez. Uma versão simples armazena as configurações em um objeto de configuração.

module App
  class Config
    attr_accessor :api_key
  end

  def self.config
    @config ||= Config.new
  end

  def self.configure
    yield(config)
  end
end

App.configure { |c| c.api_key = "secret" }
puts App.config.api_key

Erros personalizados

Defina classes de erro específicas da gema dentro do seu espaço de nomes para que os usuários possam capturar exatamente os seus erros. Herde de StandardError.

module Payment
  class Error < StandardError; end
  class DeclinedError < Error; end
end

begin
  raise Payment::DeclinedError, "card declined"
rescue Payment::Error => e
  puts "Handled: " + e.message
end

Evite alterar classes globalmente

Evite editar globalmente classes centrais como String. Isso causa surpresas em outros códigos. Se precisar estender uma classe, use refinamentos para limitar o escopo da alteração ou adicione métodos auxiliares às suas próprias classes.

Mantenha poucas dependências

Cada dependência de execução que você adiciona torna-se uma dependência para todos os seus usuários. Prefira a biblioteca padrão quando for razoável e só adicione uma gema quando ela realmente compensar.

Menos dependências significam menos conflitos de versão e instalações mais rápidas.

Documente a API pública

Adicione comentários descrevendo os argumentos e o valor de retorno de cada método público. Ferramentas como YARD transformam esses comentários em documentação navegável, e um bom README com exemplos costuma ser decisivo para que as pessoas adotem sua gema.

Verificação rápida

Teste sua compreensão sobre a organização do código de uma gema.

Recapitulação: escrevendo o código

Você aprendeu a organizar os componentes internos de uma gema:

  • Envolva tudo em um módulo de espaço de nomes.
  • Faça os caminhos dos arquivos corresponderem aos nomes das constantes.
  • Mantenha uma API pública pequena e marque os auxiliares como private.
  • Defina classes de erro personalizadas e evite alterações globais de classes.
  • Mantenha poucas dependências e documente a API.

Em seguida, vamos adicionar testes e versionamento.

Grátis para começar

Aprenda Ruby com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
29
Aulas
109

Perguntas Frequentes

A aula “Escrevendo o código” é grátis?

Sim — o texto completo de “Escrevendo o código” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.

O que vou aprender em “Escrevendo o código”?

Organize uma gem. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Ruby Academy?

Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Escrevendo o código”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Ruby Academy?

Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Estrutura de uma gem
  2. Escrevendo o código
  3. Testes e versionamento
  4. Publicando no RubyGems
← Voltar para Ruby Academy