Escrevendo o código
Organize uma gem.
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.messageConvenção de nomes de arquivos
As ferramentas do Ruby esperam que os caminhos dos arquivos correspondam aos nomes das constantes:
Greeterfica emlib/greeter.rb.Greeter::Hellofica emlib/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_keyErros 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
endEvite 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.
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
- Estrutura de uma gem
- Escrevendo o código
- Testes e versionamento
- Publicando no RubyGems