<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rafael Silva</title>
    <description>The latest articles on DEV Community by Rafael Silva (@rsmwall).</description>
    <link>https://dev.to/rsmwall</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F846828%2Fcc776726-5527-4dc8-8007-3fe88085984b.jpeg</url>
      <title>DEV Community: Rafael Silva</title>
      <link>https://dev.to/rsmwall</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rsmwall"/>
    <language>en</language>
    <item>
      <title>Um pouco sobre Estrutura de Pastas em Ruby on Rails</title>
      <dc:creator>Rafael Silva</dc:creator>
      <pubDate>Fri, 11 Nov 2022 16:33:42 +0000</pubDate>
      <link>https://dev.to/rsmwall/um-pouco-sobre-estrutura-de-pastas-em-ruby-on-rails-428c</link>
      <guid>https://dev.to/rsmwall/um-pouco-sobre-estrutura-de-pastas-em-ruby-on-rails-428c</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gerando
&lt;/h2&gt;

&lt;p&gt;Para o nosso exemplo vamos criar um projeto chamado &lt;em&gt;appexemplo&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails new appexemplo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pastas
&lt;/h2&gt;

&lt;p&gt;O comando irá gerar toda uma estrutura para o projeto que deverá se parecer com isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz80t1ofa6knti82j5q0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz80t1ofa6knti82j5q0x.png" alt="Imagem mostrando as pastas geradas pelo Rails em um novo projeto" width="792" height="721"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Dentro de algumas dessas pastas existem subdivisões e vamos ver algumas delas agora.&lt;/p&gt;

&lt;h3&gt;
  
  
  app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe27dssdttwm19n6m27zh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe27dssdttwm19n6m27zh.png" alt="Imagem mostrando as subpastas do diretório _app_" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;app/controllers&lt;/strong&gt; = é onde o Rails vai buscar as classes controller que tratam das requisiçoes web do usuário.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;app/helpers&lt;/strong&gt; = é onde ficam as classes auxiliares para as classes model, view e controller, para que estes possam ficar menores e mais organizados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;app/models&lt;/strong&gt; = é onde ficam as classes que modelam os dados armazenados no banco de dados.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;app/views&lt;/strong&gt; = é 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.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  config
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjzsuaw0o1s3875eh1ij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjzsuaw0o1s3875eh1ij.png" alt="Imagem mostrando as subpastas do diretório _config_" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui ficam os arquivos de configuração do projeto.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;config/environments&lt;/strong&gt; = aqui ficam os arquivos de configuração dos 3 ambientes que o Rails possui: development, test e production.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;config/initializers&lt;/strong&gt; = aqui ficam todos os arquivos que são executados quando a aplicação é iniciada.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  db
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p5bteq74t5dak77rcww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p5bteq74t5dak77rcww.png" alt="Imagem mostrando as subpastas do diretório _db_" width="800" height="112"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui podem conter scripts que gerenciam o banco de dados.&lt;/p&gt;

&lt;h3&gt;
  
  
  lib
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdpgcgxjiu13ocftguu8j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdpgcgxjiu13ocftguu8j.png" alt="Imagem mostrando as subpastas do diretório _lib_" width="800" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui como o nome já diz &lt;strong&gt;libraries&lt;/strong&gt; ficam as bibliotecas, a menos que elas já pertençam a outro lugar.&lt;/p&gt;

&lt;h3&gt;
  
  
  log
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhsycfnazxswx6vnq5ju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhsycfnazxswx6vnq5ju.png" alt="Imagem mostrando as subpastas do diretório _log_" width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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). &lt;/p&gt;

&lt;h3&gt;
  
  
  public
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fenw9z33491034g5pscmr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fenw9z33491034g5pscmr.png" alt="Imagem mostrando as subpastas do diretório _public_" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  test
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqqk9na46xvq9b23dg66i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqqk9na46xvq9b23dg66i.png" alt="Imagem mostrando as subpastas do diretório _test_" width="791" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui ficam os testes que você cria e que o Rails cria para você, como testes funcionais, unit tests, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  tmp
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq7j72zf1edeyiye5lfs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq7j72zf1edeyiye5lfs.png" alt="Imagem mostrando as subpastas do diretório _tmp_" width="797" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui o nome já é autossugestivo, nessa pasta ficam os arquivos temporários.&lt;/p&gt;

&lt;h3&gt;
  
  
  vendor
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpqpuebkhqian4d2b5bk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpqpuebkhqian4d2b5bk.png" alt="Imagem mostrando as subpastas do diretório _vendor_" width="795" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui ficam os diretórios de terceiros, como diretórios de segurança ou utilitários do banco de dados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;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)&lt;/p&gt;

&lt;p&gt;Se você gostou desse artigo, me segue no Twitter, no Github e aqui, o user é o mesmo: &lt;a class="mentioned-user" href="https://dev.to/rsmwall"&gt;@rsmwall&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
