5 exemplos da melhor utilização do Ruby
Já alguma vez pensou no que podemos fazer com Ruby? Bem, o céu é provavelmente o limite, mas temos todo o gosto em falar sobre alguns casos mais ou menos conhecidos...
Há alguns anos, estava a fazer um churrasco com alguns dos meus amigos, todos programadores de Java. Não sei bem como surgiu o assunto, mas começámos a falar dos nossos ambientes de programação. Disse-lhes que fazia todo o meu desenvolvimento usando Vim e terminais. Isso deu origem a algumas piadas e perguntas engraçadas, como se eu ainda usava cartões perfurados 🙂
Desde então, experimentei alguns IDEs "reais", mas sempre voltei ao Vim e terminais porque é um método muito rápido, tem todas as ferramentas de que preciso e simplesmente gosto de trabalhar no modo de texto.
Aqui estão alguns pormenores sobre o meu fluxo de trabalho. Vale a pena mencionar que trabalho em Linux, mas pode configurá-lo em Mac ou Windows sem problemas.
Começo o meu dia de trabalho com a abertura de um terminal, cd ~/Projects/XYZ, e executo tmuxPor isso, vamos começar por aí.
O que é TMUX? Como dizem os autores:
TMUX é um multiplexador de terminais. Permite-lhe alternar facilmente entre vários programas num terminal, separá-los (continuam a correr em segundo plano) e voltar a ligá-los a um terminal diferente.
Utilizo-o para alternar entre várias coisas num só terminal. Assim, num TMUX janela, tenho o Carris servidor em execução, no segundo tenho o meu Vim aberto, e sempre que preciso de fazer algo no terminal, como verificar rotas, executar migrações ou testes, basta abrir uma nova janela com CTRL-A C e fazer a coisa.
Eu não uso TMUX painéis, apenas janelas, e fazer muitas alternâncias (tenho a ligação CTRL + duplo A para alternar entre as últimas janelas).
Outra caraterística muito conveniente do TMUX é que me permite encontrar e copiar texto de um terminal sem utilizar o rato.
É a parte principal do meu fluxo de trabalho. Não vou entrar em pormenores sobre o que VIM é e como é diferente de outros editores. Existem muitos artigos e vídeos excelentes sobre o assunto. Em poucas palavras, Vim é um editor modal. Tem dois modos, o modo de inserção e o modo normal. O modo de inserção serve para escrever texto num documento e o modo normal serve para efetuar diferentes operações no documento, como mover o cursor, apagar fragmentos de texto, alterá-lo, etc. Parece estranho, mas passado algum tempo parece muito natural e é muito difícil voltar ao seu editor normal.
O que eu gostaria de vos mostrar é a forma como combino Vim com outras ferramentas para obter tudo o que preciso como programador Web.
Não sou fã de plugins pesados Vim por isso estou a utilizar apenas algumas. Aqui está a lista:
NERDtree - é um explorador de ficheiros. Permite-lhe realizar facilmente algumas operações básicas do sistema de ficheiros, como mover ficheiros, renomear, criar novos ficheiros e muitas outras,
vim-endwise - Eu sou um Rubi por isso utilizo-o para adicionar fim após se, fazer, defesa, e várias outras palavras-chave,
vim-rails - é um Carris plugin de potência. Conhece a estrutura de um Aplicação Rails. Quer verificar o parcial sob o seu cursor? Basta premir gf e abre-o na janela atual. Tem muitas outras opções, mas esta é a que utilizo mais frequentemente,
vim-surround - excelente plugin que facilita muito o trabalho com a envolvente. Com ele, pode alterar a envolvente do texto de () para [] com apenas alguns toques no teclado,
vim-repetir - complementar ao Vim-surround. Permite uma mudança de ambiente repetitiva com . (repetir a última alteração no Vim),
vimwiki- a minha maneira de tomar notas,
fzf.vim+ fzf - a parte central da minha desenvolvimento web fluxo de trabalho.

Estas são as ferramentas que definem a forma como faço a minha programação. Apercebi-me que, normalmente, quando estou a fazer algumas tarefas de programação, passo a maior parte do meu tempo a descobrir como é que as coisas funcionam. Para o fazer, preciso de verificar rapidamente diferentes partes da base de código, definições de métodos, classes e outras coisas.
Fzf é um filtro Unix interativo para a linha de comandos que pode ser utilizado com quaisquer listas (ficheiros, histórico de comandos, commits git, listas de processos); por outras palavras, é um fuzzy finder.
Ripgrep é uma alternativa ao grep, mas é o mais rápido.
Uma vez combinados, estes dois elementos permitem-me encontrar rapidamente tudo o que pretendo na minha projeto.
Tenho duas definições no meu Vim ficheiro de configuração para me ajudar com isto:
nnoremap :Ficheiros
nnoremap :Rg
A primeira permite-me encontrar rapidamente os ficheiros corretos utilizando a procura difusa nos caminhos dos ficheiros (CTRL-P). O segundo executa o fuzzy finder em todos os caminhos e conteúdos dos ficheiros no meu projeto utilizando Ripgrep (CTRL-F).
Então, digamos que eu queira encontrar a migração onde eu adicionei uma coluna ao utilizadores mesa. Carrego em CTRL-F e escrevo algo como adcolusnam e corresponderá a add_column :utilizadores, :nome, :string.
Quando procuro a definição de um método, costumo executar CTRL-F def nome_do_método.
É muito útil, pois procura através do caminho do ficheiro + conteúdo. É especialmente conveniente quando eu sei que o conteúdo que estou procurando está em uma parte específica do projeto. Por exemplo, quero encontrar onde actualizámos um nome de utilizador e lembro-me que está algures nos controladores. Carrego em CTRL-F nome da conexão para corresponder à linha app/controladores/controlador_de_utilizadores: @user.update(name: new_name).
Se conhece o seu projeto e a estrutura da base de código, pode facilmente construir consultas de pesquisa difusa para encontrar rapidamente quase tudo o que pretende.
Clique aqui para ver uma pequena gravação minha a brincar com a base de código do `discourse` (440k LOC no meu i5, 16GB desktop) e a mostrar como costumo mexer no projeto.
Espero que tenha ficado interessado na minha configuração e tenha decidido dar Fzf nos seus esforços de codificação. Mudou realmente a forma como estou a utilizar o Vim como código editor.