Um pouco sobre Estrutura de Pastas em Ruby on Rails
Tags: ruby, rails, programming
Published: 2022-11-11 16:33:42

Quando começamos a utilizar uma ferramenta, seja ela uma linguagem, framework ou um photoshop da vida (sim, isso saiu um pouco do exemplo de programação), e pegamos uma certa rotina com o uso, passamos a criar um tipo de memória muscular, onde, não importa onde estejamos, se em um computador pessoal, de um amigo ou do trabalho, conseguiremos manipular da mesma forma.

E isso é algo que podemos ter por aqui, pense comigo, você desenvolve aquele sistema perfeito que está te dando o maior orgulho e você conhece um amigo que também sabe a mesma ferramenta, ele acha uma falha e você está ocupado para corrigir, com uma mesma estrutura, ele vai saber onde está cada arquivo e pode ajudar. Da mesma forma qualquer projeto que chegue em suas mãos, tendo a mesma estrutura irá facilitar bastante um manuseio e manutenção.

E podemos dizer tudo isso de Rails, afinal com um simples comando ele faz o favor de nos entregar toda essa estrutura pronta para usar, sem dor de cabeça.

## Gerando

Para o nosso exemplo vamos criar um projeto chamado _appexemplo_.

```
rails new appexemplo
```

## Pastas

O comando irá gerar toda uma estrutura para o projeto que deverá se parecer com isso:

![Imagem mostrando as pastas geradas pelo Rails em um novo projeto](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z80t1ofa6knti82j5q0x.png)

Dentro dessas pastas podemos organizar o projeto de forma que outra pessoa que trabalhe com Rails não vai precisar perguntar como o prejeto foi organizado.

Dentro de algumas dessas pastas existem subdivisões e vamos ver algumas delas agora.

### app

![Imagem mostrando as subpastas do diretório _app_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e27dssdttwm19n6m27zh.png)

Aqui ficam os componentes da sua aplicação, é aqui também que estão as pastas de view, controllers, models da Arquitetura MVC

- **app/controllers** = é onde o Rails vai buscar as classes controller que tratam das requisiçoes web do usuário.
- **app/helpers** = é onde ficam as classes auxiliares para as classes model, view e controller, para que estes possam ficar menores e mais organizados.
- **app/models** = é onde ficam as classes que modelam os dados armazenados no banco de dados.
- **app/views** = é onde ficam os modelos de exibição, layouts para preencher com os dados da aplicação, converter para HTML e exibir para o usuário.

### config

![Imagem mostrando as subpastas do diretório _config_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hjzsuaw0o1s3875eh1ij.png)

Aqui ficam os arquivos de configuração do projeto.

- **config/environments** = aqui ficam os arquivos de configuração dos 3 ambientes que o Rails possui: development, test e production.

- **config/initializers** = aqui ficam todos os arquivos que são executados quando a aplicação é iniciada.

### db

![Imagem mostrando as subpastas do diretório _db_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7p5bteq74t5dak77rcww.png)

Aqui podem conter scripts que gerenciam o banco de dados.

### lib

![Imagem mostrando as subpastas do diretório _lib_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dpgcgxjiu13ocftguu8j.png)

Aqui como o nome já diz **libraries** ficam as bibliotecas, a menos que elas já pertençam a outro lugar.

### log

![Imagem mostrando as subpastas do diretório _log_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rhsycfnazxswx6vnq5ju.png)

Aqui é onde o Rails vai criar os logs de erro, ele cria logs para o servidor (server.log) e cada ambiente Rails (development.log, test.log e production.log). 

### public

![Imagem mostrando as subpastas do diretório _public_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/enw9z33491034g5pscmr.png)

Aqui ficam os arquivos que estam com acesso público, como imagens, páginas estáticas, etc.

### test

![Imagem mostrando as subpastas do diretório _test_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qqk9na46xvq9b23dg66i.png)

Aqui ficam os testes que você cria e que o Rails cria para você, como testes funcionais, unit tests, etc.

### tmp

![Imagem mostrando as subpastas do diretório _tmp_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hq7j72zf1edeyiye5lfs.png)

Aqui o nome já é autossugestivo, nessa pasta ficam os arquivos temporários.

### vendor

![Imagem mostrando as subpastas do diretório _vendor_](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tpqpuebkhqian4d2b5bk.png)

Aqui ficam os diretórios de terceiros, como diretórios de segurança ou utilitários do banco de dados.

## Conclusão

Desde a criação de um projeto em Rails, já temos uma estrutura completa e organizada que além de deixar o projeto mais bonito, evita dores de cabeça futuras, principalmente levando em conta as manutenções do nosso software, sem falar que coisas assim mais organizadas e bem feitas dão um "ar de profissionalidade" e você pode impressionar outras pessoas com isso (recomendo que sejam também alguém da área, caso contrário pode surtir um efeito contrário)

Se você gostou desse artigo, me segue no Twitter, no Github e aqui, o user é o mesmo: @rsmwall.