Criando uma aplicação Rails 6
Neste post vamos criar uma aplicação Rails 6 do "zero".Coloco zero entre aspas, porque vamos começar de um ponto que considera que você já tenha instalado o Ruby na sua máquina. Se não instalou, minha sugestão é usar e seguir os passos do RVM. Ele instala e controla versões do Ruby no seu computador.
Rails é uma framework para desenvolvimento web em Ruby. Eu gosto de codar em Ruby, porque é uma linguagem simples de escrever, ler, e manter. Eu adoro Rails porque segue a tradicional linha MVC e oferece gazilhões de formas de customizar ou ampliar tudo que já vem pronto através de seus próprios módulos e/ou das famosas gems.
Para mais informações sobre como instalar Ruby e Rails no seu computador, sugiro estes 2 artigos:
Instalação Rails e Criando uma aplicação Rails. O segundo artigo mostra uma aplicação Rails 4. O processo aqui será praticamente o mesmo.
Blz. Vamos lá:
1 - Verifique as versões do Ruby e do Rails
Antes de começar a criar a aplicação, vamos ter certeza de que estamos usando as versões que queremos com os comandos ruby -v:vivipoit ~ > ruby -v ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]
E depois rails -v:
vivipoit ~ > rails -v Rails 6.0.2.2
No meu caso, podemos ver que eu tenho o Ruby 2.6 e o Rails 6 instalados corretamente no meu computador, e que é com eles que estou trabalhando neste momento.
Caso seu Ruby esteja diferente, verifique se sua máquina instalou a versão que precisamos com o comando rvm list.
Se a versão que queremos aparecer, buscar usar o comando rvm use 2.6.5 para que o RVM troque de uma para a outra.
Caso a versão não tenha aparecido, você de fato precisa instalar ela. Faça isso com o comando rvm install 2.6.5.
Se o Ruby está em ordem, mas a versão do Rails está diferente, use o comando gem install rails -v 6.0.2.2 para instalar essa versão específica.
(Estou escrevendo este post menos de 10 dias depois que ela foi lançada. Seria normal a máquina ter uma versão mais antiga.)
2 - Rode o comando rails new
Agora com as versões em ordem, vamos usar o comando rails new para criar a aplicação, mas antes disso, vamos rodar rails new --help para vermos tudo que pode ser feito com este comando. O resultado é:
vivipoit ~ > rails new --help Usage: rails new APP_PATH [options] Options: [--skip-namespace], [--no-skip-namespace] # Skip namespace (affects only isolated applications) -r, [--ruby=PATH] # Path to the Ruby binary of your choice # Default: /Users/vivipoit/.rvm/rubies/ruby-2.6.5/bin/ruby -m, [--template=TEMPLATE] # Path to some application template (can be a filesystem path or URL) -d, [--database=DATABASE] # Preconfigure for selected database (options: mysql/postgresql/sqlite3/oracle/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc) # Default: sqlite3 [--skip-gemfile], [--no-skip-gemfile] # Don't create a Gemfile -G, [--skip-git], [--no-skip-git] # Skip .gitignore file [--skip-keeps], [--no-skip-keeps] # Skip source control .keep files -M, [--skip-action-mailer], [--no-skip-action-mailer] # Skip Action Mailer files [--skip-action-mailbox], [--no-skip-action-mailbox] # Skip Action Mailbox gem [--skip-action-text], [--no-skip-action-text] # Skip Action Text gem -O, [--skip-active-record], [--no-skip-active-record] # Skip Active Record files [--skip-active-storage], [--no-skip-active-storage] # Skip Active Storage files -P, [--skip-puma], [--no-skip-puma] # Skip Puma related files -C, [--skip-action-cable], [--no-skip-action-cable] # Skip Action Cable files -S, [--skip-sprockets], [--no-skip-sprockets] # Skip Sprockets files [--skip-spring], [--no-skip-spring] # Don't install Spring application preloader [--skip-listen], [--no-skip-listen] # Don't generate configuration that depends on the listen gem -J, [--skip-javascript], [--no-skip-javascript] # Skip JavaScript files [--skip-turbolinks], [--no-skip-turbolinks] # Skip turbolinks gem -T, [--skip-test], [--no-skip-test] # Skip test files [--skip-system-test], [--no-skip-system-test] # Skip system test files [--skip-bootsnap], [--no-skip-bootsnap] # Skip bootsnap gem [--dev], [--no-dev] # Setup the application with Gemfile pointing to your Rails checkout [--edge], [--no-edge] # Setup the application with Gemfile pointing to Rails repository [--rc=RC] # Path to file containing extra configuration options for rails command [--no-rc], [--no-no-rc] # Skip loading of extra configuration options from .railsrc file [--api], [--no-api] # Preconfigure smaller stack for API only apps -B, [--skip-bundle], [--no-skip-bundle] # Don't run bundle install --webpacker, [--webpack=WEBPACK] # Preconfigure Webpack with a particular framework (options: react, vue, angular, elm, stimulus) [--skip-webpack-install], [--no-skip-webpack-install] # Don't run Webpack install Runtime options: -f, [--force] # Overwrite files that already exist -p, [--pretend], [--no-pretend] # Run but do not make any changes -q, [--quiet], [--no-quiet] # Suppress status output -s, [--skip], [--no-skip] # Skip files that already exist Rails options: -h, [--help], [--no-help] # Show this help message and quit -v, [--version], [--no-version] # Show Rails version number and quit Description: The 'rails new' command creates a new Rails application with a default directory structure and configuration at the path you specify. You can specify extra command-line arguments to be used every time 'rails new' runs in the .railsrc configuration file in your home directory. Note that the arguments specified in the .railsrc file don't affect the defaults values shown above in this help message. Example: rails new ~/Code/Ruby/weblog This generates a skeletal Rails installation in ~/Code/Ruby/weblog.
Como dito no início, o Rails já traz consigo um monte de funções, ferramentas, e códigos. Nesse comando inicial, rails new, na própria criação da aplicação, já é possível selecionar, configurar, e/ou ignorar algumas dessas ajudas.
No nosso caso, vamos usar uma ferramenta de testes diferente da padrão. (Ela será instalada no 5o post desta série.) Então, para o momento, vamos pedir para o Rails "pular" a parte de instalação das ferramentas de testes padrão. Podemos ver nas informações acima que fazemos isso acrescentando -T ao final do nosso comando.
O que também conseguimos ver acima é que o Rails, como padrão, trabalha com bancos de dados sqlite3. No 4o post desta série, nós vamos colocar nossa aplicação no Heroku, e o Heroku não trabalha com sqlite3. Então, desde já, vamos pedir para que o Rails use o postgresql ao invés do padrão. Fazemos isso acrescentando -d=postgresql.
O que também conseguimos ver acima é que o Rails, como padrão, trabalha com bancos de dados sqlite3. No 4o post desta série, nós vamos colocar nossa aplicação no Heroku, e o Heroku não trabalha com sqlite3. Então, desde já, vamos pedir para que o Rails use o postgresql ao invés do padrão. Fazemos isso acrescentando -d=postgresql.
Nosso comando também precisa de um nome para o projeto. Esta série sampope se trata de um pet project meu, então vou chamar a aplicação de sampope mesmo.
O comando completo será rails new sampope -T -d=postgresql.
Precisamos ter certeza de que o diretório que o Rails cria é colocado num lugar que a gente encontre facilmente depois. Eu gosto de manter todos os meus projetos num diretório chamado Projects, então primeiro navego lá:
vivipoit ~ > cd Projects/
E depois rodo o comando:
vivipoit ~/Projects > rails new sampope -T -d=postgresql
O que segue é o output do Rails enquanto ele cria todos os diretórios e arquivos. Você verá vários create na sua tela.
Após criar tudo isso, o Rails roda o comando bundle install automaticamente. Você provavelmente consegue encontrar a linha run bundle install no final da lista de create. Essa é a forma que o Rails instala no seu computador todas a gems que ele precisa para rodar a aplicação.
3 - Navegue para seu novo diretório
Rodando o comando ls, agora você verá o diretório com o nome dado à aplicação. No meu caso este diretório chama sampope. Vamos navegar até lá e ver o que temos ali dentro:
vivipoit ~/Projects > cd sampope vivipoit ~/Projects/sampope (master) > ls -l total 56 -rw-r--r-- 1 vivipoit staff 1738 Mar 27 11:13 Gemfile -rw-r--r-- 1 vivipoit staff 4901 Mar 27 11:13 Gemfile.lock -rw-r--r-- 1 vivipoit staff 374 Mar 27 11:13 README.md -rw-r--r-- 1 vivipoit staff 227 Mar 27 11:13 Rakefile drwxr-xr-x 11 vivipoit staff 352 Mar 27 11:13 app drwxr-xr-x 7 vivipoit staff 224 Mar 27 11:14 bin drwxr-xr-x 16 vivipoit staff 512 Mar 27 11:13 config -rw-r--r-- 1 vivipoit staff 130 Mar 27 11:13 config.ru drwxr-xr-x 3 vivipoit staff 96 Mar 27 11:13 db drwxr-xr-x 4 vivipoit staff 128 Mar 27 11:13 lib drwxr-xr-x 3 vivipoit staff 96 Mar 27 11:13 log -rw-r--r-- 1 vivipoit staff 219 Mar 27 11:13 package.json drwxr-xr-x 9 vivipoit staff 288 Mar 27 11:13 public drwxr-xr-x 3 vivipoit staff 96 Mar 27 11:13 storage drwxr-xr-x 6 vivipoit staff 192 Mar 27 11:13 tmp drwxr-xr-x 3 vivipoit staff 96 Mar 27 11:13 vendor
Aí está nossa aplicação! Podemos ver que o Rails instalou um monte de arquivos e inclusive ajustou suas permissões conforme ele precisa para rodar. Será que está tudo certo? Vamos descobrir!
4 - Rode o comando rails webpacker:install
Uma das grandes novidades no Rails 6, é que o webpacker é o compilador padrão para os arquivos em JavaScript. De forma bem simplificada, podemos dizer que ele ajuda o Rails a usar e abusar do conhecido webpack.
Reza a lenda que ao criar uma aplicação em Rails 6, o Rails já prepara e instala tudo para o webpacker rodar. Eu ainda não tive essa sorte, e por isso rodo o comando rails webpacker:install.
Se tudo correr bem, no final ele comemora com festa e bolo na linha que diz Webpacker successfully installed.
Para iniciarmos nosso banco de dados, vamos rodar o comando rails db:setup. Ele cria os bancos e mostra o feedback. Algo assim:
5 - Rode o comando rails db:setup
Nossa aplicação agora existe no sentido do código todo estar aí para ela rodar, mas, se rodarmos ela agora, veremos uma tela de erro do Rails, dizendo que ele não encontrou o banco de dados especificado.Para iniciarmos nosso banco de dados, vamos rodar o comando rails db:setup. Ele cria os bancos e mostra o feedback. Algo assim:
vivipoit ~/Projects/sampope (master) > rails db:setup Created database 'sampope_development' Created database 'sampope_test'
6 - Rode o comando rails s
Agora sim, vamos rodar nossa aplicação!
rails s é o comando que nos permite rodar o rails server. Ele já vem dentro do Rails, faz parte desse mundo de coisas que o Rails criou e instalou, e é um serverzinho que nos permite rodar a aplicação e vê-la funcionando sem muito esforço.
vivipoit ~/Projects/sampope (master) > rails s => Booting Puma => Rails 6.0.2.2 application starting in development => Run `rails server --help` for more startup options Puma starting in single mode... * Version 4.3.3 (ruby 2.6.5-p114), codename: Mysterious Traveller * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://127.0.0.1:3000 * Listening on tcp://[::1]:3000 Use Ctrl-C to stop
Isso parece legal. Para termos certeza de que nossa aplicação está funcionando, vamos para um navegador olhar este endereço que mostra ali na linha Listening on tcp://127.0.0.1:3000. O que temos lá?
Show de bola! Aí está nossa aplicação!
Agora podemos incrementar e desenvolver ela nos próximos posts dessa série! :-)

Nenhum comentário:
Postar um comentário