Como meu projeto em flask
foi considerado insuficiente, foi solicitado a criação do mesmo, mas com minha stack príncipal que é RubyOnRails
, apesar de não domina o framework de ponta a ponta nem ter um conhecimetno 100%, gostaria de me provar nessa aplicação.
├── .ruby-lsp/
├── app/
│ ├── assets/
│ ├── channels/
│ ├── controllers/
│ ├── helpers/
│ ├── jobs/
│ ├── mailers/
│ ├── models/
│ ├── views/
├── bin/
├── config/
├── db/
├── lib/
├── log/
├── public/
├── storage/
├── test/
├── tmp/
├── vendor/
├── .dockerignore
├── .gitattributes
├── .gitignore
├── .ruby-version
├── config.ru
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── Rakefile
└── README.md
- Criação da estrutura do projeto e as Gems
- Utilizando o scaffoding
- Troca de banco
- Rollback de banco
- Problemas com o TailwindCSS
- Problemas com rotas aninhadas
Para criação da estrutura do projeto foi usado o comando rails new <nome projeto> --database=<o banco escolhido, foi postgres> --css=<framework css desejado>
rails new to-doListRails --database=postgres --css=tailwind
O scaffold
é um comando CLI do Rails para criar arquitetura MVC de uma forma simples e prática, aplicando diretamente, com base nos atributos infromados. No meu caso foi a criação de duas tabelas e uma enum com valor boolean para true
e false
. Por padrão o Scaffold usa o SQLITE e como foi pedido alterei para o postgres na próxima seção falo melhor osbre a mudança.
rails g scaffold todo-item todo-list:belongto text completed:boolean
Por padrão o scaffold
faz a criação das tabela do banco para o SQLITE
, sendo assim de forma local. Utilizei no Gemfile a gem pg
para usar o postgres. Após o uso do Gem no Gemfile usei o bundle install
para atulizar e installar nova dependências do projeto. Mudei o banco de forma simples, como o scaffold já criou minhas tabelas locais basta apenas miagra com um db:migrate
, isso após preencher os parâmetros no database.yml
para a conexão do seu usuario com o postgres, utilizei o default, já que não irei utlizar de gitflow.
gem 'pg', '~> 1.5', '>= 1.5.6'
bundle install
db:migrate
default: &default
adapter: postgresql # Aptar para o seu banco (MySQL, SQLITE, POSTGRES, MARIADB...)
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: seu usuario
password: sua senha
host: seu host
port: porta
Caso você não saiba seu usuário do postgres utilize o comando abaixo no pgadmin
SELECT current_user;
Aqui é algo breve, porém importante. Caso seja desejado alterar as tabela na mão via arquivo do schema.rb
, usei o rails rollback
para voltar a versão anterior, adc o que deseja após use o db:migrate
rails rollback
Algumas complicações na instalação padrão do TailwindCSS, ficou corrompido. Presume que tinha sido a versão do rails
e a gem tailwind
estava atualizada para versão mais nova, porém para minha supresa não foi, executei novamente o comando CLI
para reinstalar o tailwind e felizmente sucesso. Carregou todos os styles dentro dos arquivos html.erb
bin/rails tailwindcss:install
Bem, eu queria colocar para fica de uma forma ordenada, onde para ver o item você deve passar pelas lista primeiro, já que é a lógica Todo_list -> Todo_items
, meu erro foi ter esquecido que Todo_list
é o pai de Todo_items
, já que agora eu coloquei o Todo_items
dentro de Todo_list
, e passei na rota.
Rails.application.routes.draw do # Para seguir o padrão e aninha por ordem o todo_list a após o todo_items
resources :todo_lists do # Pai
resources :todo_items # Filho
end
get "up" => "rails/health#show", as: :rails_health_check # Nosso end point HTTP
end
Um exemplo de heranção para a funcionalidade dos items que dependem totalmente da lista.
<%= form_with(model: [@todo_list, todo_item], class: "contents") do |form| %>