Criando a aplicação Rails

Para este livro, a versão do Rails utilizada será a 8 e será uma simples aplicação que guarda URLs úteis que os usuários possam acessa-las mais tarde, esta aplicaçao utiliza SQLite como banco de dados, TailwindCSS para os estilos e Importmaps para uma abordagem No-Build seguindo as novas práticas do Rails.

Criando uma nova aplicação Rails

Execute no seu terminal:

rails new hotwireapp --css tailwind --skip-jbuilder

Criando a resource Url

Para acessar a aplicaçao e começar a implementar o que é preciso, acesse a pasta do projeto e crie o scaffold Url que possui 3 atributos:

cd hotwireapp && bin/rails generate scaffold Url title:string link:string description:text

Criando página home customizada

Será criada uma página inicial personalizada para demonstrar a navegação em stack no iOS, servindo como ponto de entrada da aplicação Rails.

bin/rails generate controller pages home

Configurando a rota padrão

Defina essa página como a rota padrão no arquivo config/routes.rb, configurando-o da seguinte forma:

Rails.application.routes.draw do
  get "pages/home"
  resources :urls

  get "up" => "rails/health#show", as: :rails_health_check

  root "pages#home"
end

Migrando o banco

bin/rails db:preapare

Acessando a aplicação via browser

bin/dev

Acesse a aplicação no browser pelo localhost:3000.

Screenshot 2024-12-18 at 21.20.46.png

Adicionando uma navbar web

Adicione uma navegação entre a página inicial e a index das URLs criando a partial navbar em layouts/_navbar.html.erb.

<nav class="w-full bg-blue-600">
  <div class="container mx-auto px-4">
    <div class="flex justify-between items-center h-16">
      <div>
        <%= link_to "Hotwire App", root_url, class: "text-white text-lg font-semibold hover:text-purple-200" %>
            </div>
            <div class="flex space-x-6">
                <%= link_to "ToDos", urls_path, class: "text-white hover:text-purple-200" %>
            </div>
        </div>
    </div>
</nav>

E garanta que a partial está sendo renderizada:

<body>
  <%= render 'layouts/navbar' %>
  <main class="container mx-auto mt-28 px-5 flex">
    <%= yield %>
  </main>
</body>

Atualize e garanta que os links da Navbar estão funcionando.

Screenshot 2024-12-22 at 13.02.52.png

Estas configurações são suficientes para prosseguir no desenvolvimento de um app nativo iOS com a aplicação Rails.