danielalvarenga / myblog

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Aprendendendo Rails

Como aplicação de exemplo vamos criar um Blog, que é muito útil para quem quer mostrar seu trabalho e agrega bastante valor ao profissional (quando tem conteúdo e o mesmo é de qualidade é claro). E o mesmo projeto pode ser utilizado para construir um site institucional (com as devidas adaptações... =P).

Utilizaremos Ruby 2 e Rails 4.

Criar uma Gemset chamada "blogs" com Ruby 2.0.0 e instalar a gem "rails":

$ rvm use ruby-2.0.0@blogs --create
$ gem install rails

Criar o projeto, que chamaremos de myblog:

$ rails new myblog

Esse comando irá criar a pasta do projeto e instalará as gems necessárias a um projeto rails que estão listadas no arquivo "Gemfile" dentro do projeto.

Inicie o servidor web e depois acesse http://localhost:3000 para testar se sua aplicação está funcionando:

$rails server # para finalizar utilize "Ctrl+C"

Conhecer e saber quais gems utilizar é a parte que considero mais complicada no aprendizado, mas com o tempo você pega as manhas! =) Vamos adicionar algumas gems mais utilizadas pela comunidade.

Adicionar gems no final do arquivo "myblog/Gemfile":

# Autenticação de Usuário
gem 'devise'
# Estrutura de configuração
gem 'figaro'
# Criar formulários mais fácil
gem 'simple_form'
# Para páginas estáticas .html.erb
gem 'high_voltage'

group :development do
  # ajuda quando as coisas dão errado
  gem 'better_errors'
  # suprime as mensagens de distração no log
  gem 'quiet_assets'
  # gera arquivos para um layout de aplicação
  gem 'rails_layout'
end

group :development, :test do
	# instancia objetos para serem utilizados nos testes
	gem "factory_girl_rails", "~> 4.3.0"
	# gem de testes
	gem 'rspec-rails', '~> 2.14.0'
end

group :test do
	# reduz a quantidade de código para testes mais simples, como testes de validação
	gem 'shoulda-matchers'
	# limpa a base de dados de teste após execultar os testes
	gem 'database_cleaner'
end

Instalar no gemset as gems adicionadas ao projeto:

$ bundle install

Ainda não veremos testes nesse tutorial, mas considero importante instalar as gems para a estrutura de testes ir sendo criada automáticamente conforme vamos criando nossa aplicação.

Instale a gem de testes BDD "RSpec" no projeto:

$ rails generate rspec:install

Com isso você verá pastas e arquivos serem criados pelas gems factory-girl e rspec na pasta "myblog/spec" sempre que criar um novo model ou controller, mas não trabalharemos com testes ainda. Vamos pular essa parte e continuar.

Instale a gem de configuração no projeto:

$ rails generate figaro:install

Será criado o arquivo "myblog/config/application.yml", onde você poderá criar "Variáveis de Ambiente" que poderão ser utilizadas em qualquer parte do projeto e normalmente utilizadas para armazenar logins e senha de banco de dados e de outras aplicações que talvez você possa integrar ao projeto futuramente. Como estas informações não devem ser commitadas para repositórios, esse arquivo é adicionado ao ".gitignore" automáticamente.

Então vamos adicionar algumas variáveis ao final do arquivo "myblog/config/application.yml" como exemplo:

EMAIL_USERNAME: Your_Username # seu login
EMAIL_PASSWORD: Your_Password # sua senha
DOMAIN_NAME: example.com
OWNER_EMAIL: me@example.com

Para podermos enviar e-mail através de nossa aplicação adicione o código abaixo ao final do arquivo "myblog/config/environments/development.rb" antes da palavra "end" (utilizaremos Gmail neste exemplo):

# Configuração de acesso ao servidor de e-mail
config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    domain: ENV["DOMAIN_NAME"],
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: ENV["EMAIL_USERNAME"],
    password: ENV["EMAIL_PASSWORD"]
}

# Permite enviar e-mails em ambiente de desenvolvimento
config.action_mailer.perform_deliveries = true

Agora nossa aplicação já está bem estruturada para darmos início ao desenvolvimento, então crie um repositório no GitHub com o mesmo nome do projeto e vamos fazer nosso primeiro commit:

$ git init
$ git add -A
$ git commit -m "Commit Inicial"
$ git remote add origin https://github.com/SEU_PERFIL_GITHUB/myblog.git
$ git push -u origin master

Gere a estrutura simples de Layout com usando a gem 'rails layout' para deixar as views um pouco mais agradáveis:

$ rails generate layout simple --force

Rails Layout irá criar alguns arquivos de layout na pasta "myblog/app/views/layouts", sendo "application.html.erb" o layout padrão da aplicação e dentro dele serão carregadas todas as views e "_navigation_links.html.erb" é onde podemos adicionar links que serão exibidos em um menu no topo da página.

Agora crie o model Post e execulte migrate:

$ rails generate model Post title:string body:text date_publication:datetime
$ rake db:migrate

Crie o controller de Post e adicione uma função chamada "index":

$ rails generate controller Post index

Será criada a pasta "myblog/app/views/post" automáticamente. Crie um arquivo chamado "index.html.erb" dentro da pasta "post" e adicione:

<h1>Posts</h1>

Para adicionar esta view como Página Inicial adicione este código em "myblog/config/routes.rb" logo após "Myblog::Application.routes.draw do":

root to: 'post#index'

Instale a gem Devise em nossa aplicação para autenticação de usuários:

$ rails generate devise:install

Crie o Model de usuário com Devise e execulte migrate:

$ rails generate devise User
$ rake db:migrate

Caso queira personalizar as views de Devise você pode importá-las para sua aplicação com o comando:

$ rails generate devise:views

Em "myblog/app/views/layout/_navigation_links.html.erb" adicione os links de cadastro, login e logout de usuário:

<% if user_signed_in? %>
<li><%= link_to 'Logout', destroy_user_session_path, method: :delete %></li>
<% else %>
	<li><%= link_to 'Cadastre-se', new_user_registration_path %></li>
	<li><%= link_to 'login', user_session_path %></li>
<% end %>

About


Languages

Language:Ruby 93.5%Language:JavaScript 3.6%Language:CSS 3.0%