Rails para designers

September 4th, 2008

Este post é para designers que pretendem trabalhar com Rails e querem um guia inicial para poderem se dar bem com o programador. É bem introdutório, então muita gente que já conhece Rails vai falar 'putz, isso é muito básico'. E é mesmo. Mas pra quem não manja nada de programação vai ajudar. Vou falar de MVC, a estrutura do Rails e também sobre partials e helpers (um pouco mais avançado).

MVC

MVC quer dizer 'Model, View, Controller' e é um jeito de separar as camadas de um sistema. O que vai interessar a você são as Views, que são o front-end do sistema. Você não vai ter que ficar olhando aquele código enorme de programação antes do seu HTML. Talvez nem no meio. Só para complementar, no Model são implementadas as regras de negócio do sistema e as conexões com o banco de dados, e no Controller a lógica de processamento, ou seja, a intermediação do Model com as Views. É no controller que as variáveis que serão usadas nas Views são geradas.

Estrutura do Rails

Para facilitar a sua vida, todos os arquivos que você precisará editar estão ou em app/views/ ou em public/.

Existem duas estruturas básicas para as URLs em Rails, uma seguindo o padrão REST e outra que era padrão até o Rails 1.2. Você não precisa saber exatamente o que é REST, mas preicsa saber qual view editar. Qualquer dúvida, pergunte ao programador se ele está usando alguma rota específica ou fora do padrão. Para não complicar muito, digamos que o seu sistema segue o padrão REST (ou seja, é RESTful):

http://dominio.com/posts/1

Segundo o padrão REST do Rails, o controller posts vai chamar a action 'show', portanto o arquivo que você terá que editar será o app/views/posts/show.html.erb

Já se a URL for

http://dominio.com/posts/new

o arquivo será app/views/posts/new.html.erb

Public

No diretório public/ estão todos os artefatos que você normalmente usa numa página web: imagens, estilos, JavaScript, Flash, cada um no seu respectivo diretório:

  • public/images
  • public/stylesheets
  • public/javascripts

E para chamá-los é só imaginar o diretório public/ como a raiz do seu domínio, por exemplo


<img src="/images/logo.jpg" />

Layouts

Bom, layouts são basicamente templates. Eles estão em app/views/layouts. É onde você inclui elementos comuns de um site, como topo, rodapé e o conteúdo principal vai no meio. Aquilo que vai no meio da página é o conteúdo das views e tudo em volta faz parte do layout. Bem, então como eu coloco esse conteúdo das views? É só incluir a tag <%= yield %> onde você quiser que ele apareça.

O padrão no Rails é que seja renderizado o layout com o mesmo nome do controller. Se esse layout não existir, app/views/layouts/application.html.erb é utilizado.

Um arquivo .html.erb é como se fosse um arquivo HTML normal, só que com algum código Ruby embutido (ERb é embedded ruby).

Vamos ver um exemplo de layout:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
 
  <head>
    <title><%= @title || "Título" %></title>
    <%= stylesheet_link_tag 'site' %>
    <%= javascript_include_tag 'application', 'prototype', 'effects' %>
  </head>
 
  <body>
    <div id="header">
      <%= render :partial => 'shared/header' %>
    </div>
    <div id="content">
      <%= yield %>
    </div>
    <div id="footer">
      <%= render :partial => 'shared/footer' %>
    </div>
  </body>
 
</html>

Veja, parece um HTML normal, que você já está acostumado a ver e escrever. Vamos ver alguns detalhes:


 <title><%= @title || "Título" %></title>

@title aqui é uma variável, que vai estar definida em algum controller. Se ela não existir, será usada a string "Título". O || quer dizer 'ou'.

1
2
<%= stylesheet_link_tag 'site' %>
<%= javascript_include_tag 'application', 'prototype', 'effects' %>

Estas são os helpers no Rails para inclusão de CSS e JavaScript. No caso, eles vão automaticamente gerar uma tag para /stylesheets/site.css e tags para os arquivos /javascripts/application.js, /javascripts/prototype.js e /javascripts/effects.js.

Existem muitos outros helpers que podem ajudar você (e o programador) a gerar código HTML. Para mais informações, consulte a API do Rails.

Partials

Vejamos esta chamada:


<%= render :partial => 'shared/header' %>

Já viu no PHP algo como


<?php include 'header.php';?> 

? Então, é parecido. São pequenos pedaços de HTML que são comuns a várias páginas que você gostaria de reutilizar. Aliás esse é um dos princípios do Rails: DRY (Don't Repeat Yourself). O arquivo que ele vai chamar tem que ter um '_' na frente, no caso app/views/shared/_header.html.erb.

DISCLAIMER: este artigo é inspirado e muito baseado neste post (embora não seja uma tradução literal): http://glu.ttono.us/articles/2006/03/21/rails-for-designers

Conte sua história sobre Rails

September 1st, 2008

No blog Riding Rails (o blog oficial do Rails), o DHH pediu para as pessoas contarem sua história pessoal com o Rails. Segue o post traduzido:

“Tenho recebido algumas histórias realmente tocantes sobre pessoas que se tornaram programadores Rails a partir de diversas origens durante esses anos. Eu até conversei uma vez com um taxista que estava me levando para o aeroporto que estava programando em Rails. Ou os caras que queriam largar a programação, mas começaram a se divertir noovamente com Rails.

Todas essas são histórias poderosas que eu adoraria poder compartilhá-las com o mundo. Então vamos tentar fazer isso! Se você tem uma ótima história sobre como você chegou ao Rails, então por favor mande para david arroba loudthinking ponto com com o assunto “My Rails story”. Eu flitrarei todas as mensagens em uma pasta e veremos um jeito de publicá-las”.

Minha história não é nada sensacional. Eu já era programador, quando um outro desenvolvedor foi contratado, e ele queria programar em Rails, e nos convenceu a fazer isso. Eu comecei a ver o que ele fazia, estudar e comecei a mexer com Rails também.

Mas quem sabe a sua história não é sensacional, a ponto do DHH publicá-la?

Além dos livros, uma outra forma de aprender Rails me ajudou muito: os screencasts. Eles são uma forma de aprendizado mais dinâmica que os livros, e mais visual que os podcasts. Segue uma lista dos screencasts que eu já assisti e recomendo:

  • Peepcode – é um dos mais antigos, portanto um dos que tem mais conteúdo. É pago (9 USD cada) mas vale cada centavo, além de ter uma assinatura anual (149 USD). Os screencasts são longos, então cuidado para não dormir :) Por Geoffrey Grosenbach (putz, acertei de primeira)
  • Railscasts – grátis, episódios curtos e focados. Excelente. Feito por Ryan Bates.
  • Nome do Jogo – infelizmente o Carlos Brando interrompeu a série de screencasts, que ia muito na linha do Railscasts. Quem sabe não volta?
  • Pragmatic Screencasts – pago também, feito por várias pessoas e organizado pela Pragmatic Programmers, mais conhecida pelos seus livros.
  • Learning Rails – gratuito, e cobre o básico para criar sua aplicação Rails. Começou como podcast, e virou screencast.
  • Envycasts – lançado recentemente, é pago (9 USD cada), a qualidade é ótima, o conteúdo muito bom e conta com todo o senso de humor do Gregg Pollack e do Jason Seifer, que vocês podem conferir também no Rails Envy e no Rails Envy Podcast.

Reparem que quase todos os screencasts são em inglês. Mais um motivo então para aprender inglês, que eu considero fundamental para qualquer programador, apesar de haver muito material traduzido por aí, com esforços da comunidade.

Eventos

August 25th, 2008

Parece que o segundo semestre se estabeleceu como o período dos grandes eventos, pelo menos na área de TI/Web. Depois de um primeiro semestre meio inerte, o segundo promete!

Tivemos nesta sexta-feira o primeiro Happy Hour de Railers em São Paulo, no Bar do Juarez. Foi bem legal, tinha umas 30 pessoas, incluindo gente da WebCo, Pagestacker e boo-box. Quem sabe isso não motiva encontros regionais em outras cidades?

Vamos ter o InterCon 2008, evento sobre web e tendências, onde vão palestrar grandes nomes da web/blogosfera brasileira, como Fabio Seixas, Manoel Lemos, Marco Gomes, Fabio Akita, Cris Dias e o grande Luli Radfahrer. O InterCon acontece no dia 25 de outubro e tem como tema a inovação digital. Eu vou!

Ainda em outubro, nos dias 15 e 16, teremos o grande evento de Rails do ano, que eu já mencionei no post anterior, aqui em São Paulo: a Rails Summit Latin America. Eu vou!

Sem confirmação ainda, deve acontecer em setembro o Minas on Rails. Se realmente acontecer, vou fazer um esforço para comparecer.

Isso fora o ExpoMoney, mas isso é assunto para outro blog.

Como o Fabio Akita anunciou no seu blog, em outubro (dias 15 e 16) haverá a Rails Summit Brazil Latin America 2008. Vai ser o primeiro grande evento de Rails no Brasil, com presenças internacionais como Chad Fowler, Obie Fernandez, Dr. Nic Williams e até o próprio DHH (por vídeo-conferência), e nacionais como Manoel Lemos e Vinicius Teles.

Para colaborar um pouco com o evento e a divulgação, resolvi fazer (inspirado por uma pergunta do Tapajós no Twitter) uma listagem dos hotéis que ficam perto do local do evento, o Anhembi, para as pessoas que não são de São Paulo. Não sei se haverá hospedagem oficial, mas o que importa é a liberdade de escolha :)

Segue a lista (os preços variam conforme o tipo de quarto):


View Larger Map