Base de Conhecimento
Como criar um aplicativo Ruby on Rails Imprimir este Artigo
Introdução
O Rails é uma estrutura de aplicativos da Web escrita em Ruby . É necessária uma abordagem opinativa do desenvolvimento de aplicativos, assumindo que as convenções definidas atendem melhor aos desenvolvedores onde existe um objetivo comum. O Rails, portanto, oferece convenções para lidar com roteamento, dados com estado, gerenciamento de ativos e muito mais para fornecer a funcionalidade de linha de base que a maioria dos aplicativos Web precisa.
O Rails segue o padrão de arquitetura MCV ( Model-View-Controller ), que separa a lógica de um aplicativo, localizada nos modelos, do roteamento e apresentação das informações do aplicativo. Essa estrutura organizacional - junto com outras convenções que permitem aos desenvolvedores extrair o código em auxiliares e parciais - garante que o código do aplicativo não seja repetido desnecessariamente .
Neste tutorial, você criará um aplicativo Rails que permitirá aos usuários postar informações sobre tubarões e seu comportamento. Será um bom ponto de partida para o desenvolvimento futuro de aplicativos.
Pré-requisitos
Para seguir este tutorial, você precisará de:
- Uma máquina local ou servidor de desenvolvimento executando o Ubuntu 18.04. Sua máquina de desenvolvimento deve ter um usuário não raiz com privilégios administrativos e um firewall configurado com
ufw
. Para obter instruções sobre como configurar isso, consulte o tutorial Configuração inicial do servidor com o Ubuntu 18.04 . - Node.js e npm instalados em sua máquina local ou servidor de desenvolvimento. Este tutorial usa Node.js versão 10.16.3 e versão npm 6.9.0 . Para obter orientação sobre a instalação do Node.js e do npm no Ubuntu 18.04, siga as instruções na seção "Instalando usando um PPA" em Como instalar o Node.js no Ubuntu 18.04 .
- Ruby, rbenv e Rails instalados em sua máquina local ou servidor de desenvolvimento, seguindo as etapas 1 a 4 em Como instalar o Ruby on Rails com rbenv no Ubuntu 18.04 . Este tutorial usa Ruby 2.5.1 , rbenv 1.1.2 e Rails 5.2.0 .
Etapa 1 - Instalando o SQLite3
Antes de criar nosso aplicativo shark Rails, precisaremos garantir que tenhamos um banco de dados para armazenar dados do usuário. O Rails está configurado para usar o SQLite por padrão, e isso geralmente é uma boa escolha no desenvolvimento. Como os dados de nossos aplicativos não exigem uma extensibilidade programática de alto nível, o SQLite atenderá às nossas necessidades.
Primeiro, atualize o índice do seu pacote:
- sudo apt update
Em seguida, instale os pacotes sqlite3
e libsqlite3-dev
:
- sudo apt install sqlite3 libsqlite3-dev
Isso instalará o SQLite e seus arquivos de desenvolvimento necessários.
Verifique sua versão para confirmar que a instalação foi bem-sucedida:
- sqlite3 --version
3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1
Com o SQLite instalado, você está pronto para começar a desenvolver seu aplicativo.
Etapa 2 - Criando um novo projeto Rails
Com o nosso banco de dados instalado, podemos criar um novo projeto Rails e olhada em alguns do código clichê padrão que Rails dá-nos com o rails new
comando .
Crie um projeto chamado sharkapp
com o seguinte comando:
- rails new sharkapp
Você verá muitas informações dizendo o que o Rails está criando para o seu novo projeto. A saída abaixo destaca alguns arquivos, diretórios e comandos significativos:
create
. . .
create Gemfile
. . .
create app
. . .
create app/controllers/application_controller.rb
. . .
create app/models/application_record.rb
. . .
create app/views/layouts/application.html.erb
. . .
create config
create config/routes.rb
create config/application.rb
. . .
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
. . .
create config/database.yml
create db
create db/seeds.rb
. . .
run bundle install
. . .
Bundle complete! 18 Gemfile dependencies, 78 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
. . .
* bin/rake: Spring inserted
* bin/rails: Spring inserted
A saída destacada aqui informa que o Rails criou o seguinte:
Gemfile
: Este arquivo lista as dependências de gemas para seu aplicativo. Uma gem é um pacote de software Ruby e um Gemfile permite gerenciar as necessidades de software do seu projeto.app
: Oapp
diretório é onde reside o código principal do aplicativo. Isso inclui os modelos, controladores, visualizações, ativos, auxiliares e malas diretas que compõem o próprio aplicativo. Rails dá-lhe algum clichê de nível de aplicativo para o modelo MCV para começar em arquivos comoapp/models/application_record.rb
,app/controllers/application_controller.rb
, eapp/views/layouts/application.html.erb
.config
: Este diretório contém as definições de configuração do seu aplicativo:config/routes.rb
: As declarações de rota do seu aplicativo estão nesse arquivo.config/application.rb
: As configurações gerais dos componentes do seu aplicativo estão localizadas neste arquivo.
config/environments
: É neste diretório que vivem as definições de configuração para seus ambientes. Rails inclui três ambientes por padrão:development
,production
, etest
.config/database.yml
: Definições de configuração de banco de dados viver neste arquivo, que é dividido em quatro seções:default
,development
,production
, etest
. Graças ao Gemfile que acompanha orails new
comando, que incluiu asqlite3
gem, nossoconfig/database.yml
arquivo já possui seuadapter
parâmetro definidosqlite3
, especificando que usaremos um banco de dados SQLite com este aplicativo.db
: Esta pasta inclui um diretório para migrações de banco de dados chamadomigrate
, junto com os arquivosschema.rb
eseeds.rb
.schema.db
contém informações sobre seu banco de dados, enquantoseeds.rb
é onde você pode colocar dados iniciais para o banco de dados.
Por fim, o Rails executa o bundle install
comando para instalar as dependências listadas no seu Gemfile
.
Depois que tudo estiver configurado, navegue até o sharkapp
diretório:
- cd sharkapp
Agora você pode iniciar os trilhos do servidor para garantir que seu aplicativo está funcionando, usando o rails server
comando . Se você estiver trabalhando em sua máquina local, digite:
- rails server
Como o Rails é vinculado localhost
por padrão, agora você pode acessar seu aplicativo navegando no navegador para locahost:3000
onde você verá a seguinte imagem:
Se você estiver trabalhando em um servidor de desenvolvimento, primeiro verifique se as conexões são permitidas na porta 3000
:
- sudo ufw allow 3000
Em seguida, inicie o servidor com o --binding
sinalizador para vincular ao IP do servidor:
- rails server --binding=your_server_ip
Navegue para no seu navegador, onde você verá a mensagem de boas-vindas do Rails.http://your_server_ip:3000
Depois de olhar em volta, você pode parar o servidor com CTRL+C
.
Com seu aplicativo criado e no local, você está pronto para começar a construir a partir do padrão do Rails para criar um aplicativo exclusivo.
Etapa 3 - Andaimes do aplicativo
Para criar nosso aplicativo de informações sobre tubarões, precisaremos criar um modelo para gerenciar os dados do aplicativo, visualizações para permitir a interação do usuário com esses dados e um controlador para gerenciar a comunicação entre o modelo e as visualizações. Para criar essas coisas, usaremos o rails generate scaffold
comando, que nos fornecerá um modelo, uma migração de banco de dados para alterar o esquema do banco de dados, um controlador, um conjunto completo de visualizações para gerenciar as operações Criar, Ler, Atualizar e Excluir (CRUD) para o aplicativo e modelos para parciais, auxiliares e testes.
Como o generate scaffold
comando faz muito trabalho para nós, examinaremos mais de perto os recursos que ele cria para entender o trabalho que o Rails está fazendo sob o capô.
Nosso generate scaffold
comando incluirá o nome do nosso modelo e os campos que queremos em nossa tabela de banco de dados. O Rails usa o Active Record para gerenciar relacionamentos entre os dados do aplicativo, construídos como objetos com modelos, e o banco de dados do aplicativo. Cada um dos nossos modelos é uma classe Ruby , enquanto também é herdada da ActiveRecord::Base
classe. Isso significa que podemos trabalhar com nossa classe de modelo da mesma maneira que trabalharíamos com uma classe Ruby, além de extrair métodos do Active Record. O Active Record garantirá que cada classe seja mapeada para uma tabela em nosso banco de dados e cada instância dessa classe para uma linha nessa tabela.
Digite o seguinte comando para gerar um Shark
modelo, controlador e visualizações associadas:
- rails generate scaffold Shark name:string facts:text
Com name:string
e facts:text
estamos fornecendo ao Rails informações sobre os campos que gostaríamos na nossa tabela de banco de dados e o tipo de dados que eles deveriam aceitar. Ambos nos darão espaço para inserir o que gostaríamos, mas text
permitirão mais caracteres para fatos sobre tubarões.
Ao digitar esse comando, você verá novamente uma longa lista de resultados que explica tudo o que o Rails está gerando para você. A saída abaixo destaca algumas das coisas mais significativas para nossa configuração:
invoke active_record
create db/migrate/20190804181822_create_sharks.rb
create app/models/shark.rb
. . .
invoke resource_route
route resources :sharks
invoke scaffold_controller
create app/controllers/sharks_controller.rb
invoke erb
create app/views/sharks
create app/views/sharks/index.html.erb
create app/views/sharks/edit.html.erb
create app/views/sharks/show.html.erb
create app/views/sharks/new.html.erb
create app/views/sharks/_form.html.erb
. . .
Rails criou o modelo de app/models/shark.rb
e uma migração de banco de dados para ir com ele: . O registro de data e hora no seu arquivo de migração será diferente do que você vê aqui.db/migrate/20190804181822_create_sharks.rb
Ele também criou um controlador, app/controllers/sharks_controller.rb
bem como as visualizações associadas às operações CRUD de nosso aplicativo, coletadas em app/views/sharks
. Entre essas visualizações, existe uma parcial,, _form.html.erb
que contém o código usado nas visualizações.
Por fim, o Rails adicionou uma nova rota,, resources :sharks
a config/routes.rb
. Isso permite que o roteador Rails corresponda às solicitações HTTP recebidas com o sharks
controlador e suas visualizações associadas.
Embora o Rails tenha feito muito do trabalho de construir nosso código de aplicativo para nós, vale a pena dar uma olhada em alguns arquivos para entender o que está acontecendo.
Primeiro, vejamos o arquivo do controlador com o seguinte comando:
- cat app/controllers/sharks_controller.rb
class SharksController < ApplicationController
before_action :set_shark, only: [:show, :edit, :update, :destroy]
# GET /sharks
# GET /sharks.json
def index
@sharks = Shark.all
end
# GET /sharks/1
# GET /sharks/1.json
def show
end
# GET /sharks/new
def new
@shark = Shark.new
end
# GET /sharks/1/edit
def edit
end
# POST /sharks
# POST /sharks.json
def create
@shark = Shark.new(shark_params)
respond_to do |format|
if @shark.save
format.html { redirect_to @shark, notice: 'Shark was successfully created.' }
format.json { render :show, status: :created, location: @shark }
else
format.html { render :new }
format.json { render json: @shark.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /sharks/1
# PATCH/PUT /sharks/1.json
def update
respond_to do |format|
if @shark.update(shark_params)
format.html { redirect_to @shark, notice: 'Shark was successfully updated.' }
format.json { render :show, status: :ok, location: @shark }
else
format.html { render :edit }
format.json { render json: @shark.errors, status: :unprocessable_entity }
end
end
end
# DELETE /sharks/1
# DELETE /sharks/1.json
def destroy
@shark.destroy
respond_to do |format|
format.html { redirect_to sharks_url, notice: 'Shark was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_shark
@shark = Shark.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def shark_params
params.require(:shark).permit(:name, :facts)
end
end
O controlador é responsável por gerenciar como as informações são buscadas e passadas para o modelo associado e como elas são associadas a visualizações específicas. Como você pode ver, nosso sharks
controlador inclui uma série de métodos que são mapeados aproximadamente para operações CRUD padrão. No entanto, existem mais métodos do que funções CRUD, para permitir eficiência no caso de erros.
Por exemplo, considere o create
método:
. . .
def create
@shark = Shark.new(shark_params)
respond_to do |format|
if @shark.save
format.html { redirect_to @shark, notice: 'Shark was successfully created.' }
format.json { render :show, status: :created, location: @shark }
else
format.html { render :new }
format.json { render json: @shark.errors, status: :unprocessable_entity }
end
end
end
. . .
Se uma nova instância da Shark
classe for salva com sucesso, redirect_to
gerará uma nova solicitação que será direcionada ao controlador. Isso será uma GET
solicitação e será tratada pelo show
método, que mostrará ao usuário o tubarão que acabou de adicionar.
Se houver uma falha, o Rails renderizará o app/views/sharks/new.html.erb
modelo novamente, em vez de fazer outra solicitação ao roteador, dando aos usuários outra chance de enviar seus dados.
Além do controlador de tubarões, o Rails nos forneceu um modelo para uma index
visualização, que é mapeada para o index
método em nosso controlador. Usaremos isso como a visualização raiz do nosso aplicativo, por isso vale a pena dar uma olhada nele.
Digite o seguinte para gerar o arquivo:
- cat app/views/sharks/index.html.erb
<p id="notice"><%= notice %></p>
<h1>Sharks</h1>
<table>
<thead>
<tr>
<th>Name</th>
<th>Facts</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @sharks.each do |shark| %>
<tr>
<td><%= shark.name %></td>
<td><%= shark.facts %></td>
<td><%= link_to 'Show', shark %></td>
<td><%= link_to 'Edit', edit_shark_path(shark) %></td>
<td><%= link_to 'Destroy', shark, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'New Shark', new_shark_path %>
A index
visualização itera através das instâncias de nossa Shark
classe, que foram mapeadas para a sharks
tabela em nosso banco de dados. Usando o modelo ERB , a exibição gera cada campo da tabela associada a uma instância individual de tubarão: name
e facts
.
A exibição usa o link_to
auxiliar para criar um hiperlink, com a sequência fornecida como texto para o link e o caminho fornecido como destino. Os caminhos em si são possíveis através dos auxiliares que se tornaram disponíveis quando definimos a sharks
rota de recursos com o rails generate scaffold
comando
Além de observar nossa index
visão, também podemos dar uma olhada na new
visão para ver como o Rails usa parciais nas visualizações. Digite o seguinte para gerar o app/views/sharks/new.html.erb
modelo:
- cat app/views/sharks/new.html.erb
<h1>New Shark</h1>
<%= render 'form', shark: @shark %>
<%= link_to 'Back', sharks_path %>
Embora esse modelo pareça não ter campos de entrada para uma nova entrada de tubarão, a referência para render 'form'
nos diz que o modelo está puxando a _form.html.erb
parcial, que extrai o código que é repetido nas visualizações.
Olhar para esse arquivo nos dará uma noção completa de como uma nova instância de shark é criada:
- cat app/views/sharks/_form.html.erb
<%= form_with(model: shark, local: true) do |form| %>
<% if shark.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(shark.errors.count, "error") %> prohibited this shark from being saved:</h2>
<ul>
<% shark.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :name %>
<%= form.text_field :name %>
</div>
<div class="field">
<%= form.label :facts %>
<%= form.text_area :facts %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
Este modelo faz uso do auxiliar de formulário . Os auxiliares de formulário são projetados para facilitar a criação de novos objetos a partir da entrada do usuário usando os campos e o escopo de modelos específicos. Aqui, assume como argumento, e o novo objeto criador de formulários que ele cria possui entradas de campo que correspondem aos campos na tabela. Assim, os usuários têm campos de formulário para inserir um tubarão e um tubarão .form_with
form_with
model: shark
sharks
name
facts
O envio deste formulário criará uma resposta JSON com dados do usuário que o restante do seu aplicativo pode acessar por meio do método params , que cria um ActionController::Parameters
objeto com esses dados.
Agora que você sabe o que rails generate scaffold
foi produzido para você, pode definir a visualização raiz do seu aplicativo.
Etapa 4 - Criando a visualização raiz do aplicativo e testando a funcionalidade
Idealmente, você deseja que a página de destino do seu aplicativo seja mapeada para a raiz do aplicativo, para que os usuários possam entender imediatamente o objetivo do aplicativo.
Há várias maneiras de lidar com isso: por exemplo, você pode criar um Welcome
controlador e uma index
exibição associada , o que daria aos usuários uma página de destino genérica que também poderia se vincular a diferentes partes do aplicativo. No nosso caso, no entanto, fazer com que os usuários acessem nossa index
visão de tubarões será uma introdução suficiente ao objetivo do aplicativo por enquanto.
Para configurar isso, você precisará modificar as configurações de roteamento config/routes.rb
para especificar a raiz do aplicativo.
Abra config/routes.rb
para edição, uso nano
ou seu editor favorito:
- nano config/routes.rb
O arquivo ficará assim:
Rails.application.routes.draw do
resources :sharks
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
Sem definir algo mais específico, a visualização padrão na página de boas-vindas do Rails http://localhost:3000
ou será a página de boas-vindas do Rails.http://your_server_ip:3000
Para mapear a visualização raiz do aplicativo para a index
visualização do controlador de tubarões, você precisará adicionar a seguinte linha ao arquivo:
Rails.application.routes.draw do
resources :sharks
root 'sharks#index'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
Agora, quando os usuários navegarem para a raiz do aplicativo, eles verão uma lista completa de tubarões e terão a oportunidade de criar uma nova entrada de tubarão, examinar as entradas existentes e editar ou excluir as entradas fornecidas.
Salve o arquivo e saia do seu editor quando terminar de editar. Se você costumava nano
editar o arquivo, pode fazê-lo pressionando CTRL+X
, Y
e depoisENTER
Agora você pode executar suas migrações com o seguinte comando:
- rails db:migrate
Você verá a saída confirmando a migração.
Inicie seu servidor Rails mais uma vez. Se você estiver trabalhando localmente, digite:
- rails s
Em um servidor de desenvolvimento, digite:
- rails s --binding=your_server_ip
Navegue para localhost:3000
se você estiver trabalhando localmente ou se estiver trabalhando em um servidor de desenvolvimento.http://your_server_ip:3000
A página de destino do seu aplicativo ficará assim:
Para criar um novo tubarão, clique no link Novo tubarão na parte inferior da página, que o levará à sharks/new
rota:
Vamos adicionar algumas informações de demonstração para testar nosso aplicativo. Insira "Great White" no campo Name e "Scary" no campo Facts :
Clique no botão Criar para criar o tubarão.
Isso o direcionará para a show
rota, que, graças ao before_action
filtro, é definida com o set_shark
método, que captura id
o tubarão que acabamos de criar:
class SharksController < ApplicationController
before_action :set_shark, only: [:show, :edit, :update, :destroy]
. . .
def show
end
. . .
private
# Use callbacks to share common setup or constraints between actions.
def set_shark
@shark = Shark.find(params[:id])
end
. . .
Você pode testar a função de edição agora clicando em Editar na sua entrada de tubarão. Isso o levará à edit
rota do tubarão:
Altere o facts
sobre o Great White para ler “Large” em vez de “Scary” e clique em Update Shark . Isso o levará de volta à show
rota:
Por fim, clicar em Voltar levará você à sua index
exibição atualizada :
Agora que você testou a funcionalidade básica do seu aplicativo, você pode adicionar algumas validações e verificações de segurança para tornar tudo mais seguro.
Etapa 5 - Adicionando validações
Seu aplicativo shark pode aceitar informações dos usuários, mas imagine um caso em que um usuário tente criar um tubarão sem adicionar fatos a ele ou crie uma entrada para um tubarão que já esteja no banco de dados. Você pode criar mecanismos para verificar os dados antes que eles sejam inseridos no banco de dados adicionando validações aos seus modelos. Como a lógica do seu aplicativo está localizada em seus modelos, validar a entrada de dados aqui faz mais sentido do que fazê-lo em outro lugar no aplicativo.
Observe que não abordaremos escrever testes de validação neste tutorial, mas você pode descobrir mais sobre testes consultando a documentação do Rails .
Se você ainda não parou o servidor, faça isso digitando CTRL+C
.
Abra seu shark.rb
arquivo de modelo:
- nano app/models/shark.rb
Atualmente, o arquivo nos diz que a Shark
classe herda de ApplicationRecord
, que por sua vez herda de ActiveRecord::Base
:
class Shark < ApplicationRecord
end
Vamos primeiro adicionar algumas validações ao nosso name
campo para confirmar que o campo foi preenchido e que a entrada é exclusiva, impedindo entradas duplicadas:
class Shark < ApplicationRecord
validates :name, presence: true, uniqueness: true
end
Em seguida, adicione uma validação para o facts
campo para garantir que ele também seja preenchido:
class Shark < ApplicationRecord
validates :name, presence: true, uniqueness: true
validates :facts, presence: true
end
Aqui estamos menos preocupados com a singularidade dos fatos, desde que eles estejam associados a entradas únicas de tubarões.
Salve e feche o arquivo quando terminar.
Inicie o servidor novamente com rails s
ou , dependendo de você estar trabalhando localmente ou com um servidor de desenvolvimento.rails s --binding=your_server_ip
Navegue até a raiz do seu aplicativo em http://localhost:3000
ou .http://your_server_ip:3000
Clique em New Shark . No formulário, adicione "Great White" ao campo Name e "Big Teeth" ao campo Facts e clique em Create Shark . Você deve ver o seguinte aviso:
Agora, vamos ver se podemos verificar nossa outra validação. Clique em Voltar para retornar à página inicial e, em seguida, em Novo tubarão novamente. No novo formulário, digite "Tiger Shark" no campo Nome e deixe fatos em branco. Clicar em Criar tubarão acionará o seguinte aviso:
Com essas alterações, seu aplicativo possui algumas validações para garantir consistência nos dados salvos no banco de dados. Agora você pode voltar sua atenção para os usuários do seu aplicativo e definir quem pode modificar os dados do aplicativo.
Etapa 6 - Adicionando autenticação
Com as validações em vigor, temos algumas garantias sobre os dados que estão sendo salvos no banco de dados. Mas e os usuários? Se não quisermos que todos e quaisquer usuários sejam adicionados ao banco de dados, devemos adicionar algumas medidas de autenticação para garantir que apenas usuários permitidos possam adicionar tubarões. Para fazer isso, usaremos o http_basic_authenticate_with
método , que nos permitirá criar uma combinação de nome de usuário e senha para autenticar usuários.
Existem várias maneiras de autenticar usuários com o Rails, incluindo o trabalho com o bcrypt
ou devise
gems. Por enquanto, no entanto, adicionaremos um método ao nosso controlador de aplicativo que será aplicado às ações em nosso aplicativo. Isso será útil se adicionarmos mais controladores ao aplicativo no futuro.
Pare seu servidor novamente com CTRL+C
.
Abra o arquivo que define seu ApplicationController
:
- nano app/controllers/application_controller.rb
Dentro, você verá a definição para a ApplicationController
classe, da qual os outros controladores em seu aplicativo herdam:
class ApplicationController < ActionController::Base
end
Para autenticar usuários, usaremos um nome de usuário e uma senha codificados no http_basic_authenticate_with
método. Adicione o seguinte código ao arquivo:
class ApplicationController < ActionController::Base
http_basic_authenticate_with name: 'sammy', password: 'shark', except: [:index, :show]
end
Além de fornecer o nome de usuário e a senha aqui, também restringimos a autenticação, especificando as rotas nas quais isso não deveria ser necessário: index
e show
. Outra maneira de conseguir isso seria escrever only: [:create, :update, :destroy]
. Dessa forma, todos os usuários poderão examinar todos os tubarões e ler fatos sobre determinados tubarões. No entanto, quando se trata de modificar o conteúdo do site, os usuários precisam provar que têm acesso.
Em uma configuração mais robusta, você não deseja codificar valores dessa maneira, mas, para fins de demonstração, isso permitirá que você veja como pode incluir a autenticação para as rotas do seu aplicativo. Ele também permite que você veja como o Rails armazena dados da sessão por padrão em cookies: depois que você se autentica em uma ação especificada, não é necessário se autenticar novamente na mesma sessão.
Salve e feche app/controllers/application_controller.rb
quando terminar de editar. Agora você pode testar a autenticação em ação.
Inicie o servidor com ou rails s
ou navegue para seu aplicativo em ou .rails s --binding=your_server_ip
http://localhost:3000
http://your_server_ip:3000
Na página de destino, clique no botão Novo tubarão . Isso acionará a seguinte janela de autenticação:
Se você digitar a combinação de nome de usuário e senha adicionada app/controllers/application_controller.rb
, poderá criar com segurança um novo tubarão.
Agora você tem um aplicativo de tubarão em funcionamento, completo com validações de dados e um esquema básico de autenticação.
Conclusão
O aplicativo Rails que você criou neste tutorial é um ponto de partida que você pode usar para desenvolvimento adicional. Se você estiver interessado em explorar o ecossistema do Rails, a documentação do projeto é um ótimo lugar para começar.
Você também pode aprender mais sobre como adicionar recursos aninhados ao seu projeto, lendo Como criar recursos aninhados para um aplicativo Ruby on Rails , que mostrará como criar os modelos e rotas do aplicativo.
Além disso, você pode querer explorar como configurar um front-end mais robusto para o seu projeto com uma estrutura como o React . Como configurar um projeto Ruby on Rails com um front-end do React oferece orientações sobre como fazer isso.
Esta resposta lhe foi útil?
Veja também
Introdução O Ruby on Rails é uma estrutura de aplicativo da web popular do lado do servidor, com...
Introdução O WordPress é um sistema popular de gerenciamento de conteúdo que, de acordo com a...
Introdução No Python, como em todas as linguagens de programação, os tipos de dados são usados...
Introdução Instruções condicionais fazem parte de toda linguagem de programação. Com instruções...
Introdução Python é uma linguagem de programação versátil que pode ser usada para muitos...