Você está na página 1de 34

II Frum de Tecnologia em Software Livre do Serpro Regional Porto Alegre Outubro 2009

Framework de Desenvolvimento Web: Ruby on Rails


Vincius Alves Hax

ndice Linguagem Ruby Conceito de framework Ruby on Rails: conceitos bsicos Rails e o banco de dados Controllers e views Mais Rails Rails no dia-a-dia Links
II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

Sobre o palestrante
Formando em Engenharia de Computao FURG Zetaflops Computao de Alto Desempenho Desenvolvedor web desde 2005 Era uma vez no FISL 6.0 (? de 2005) Desenvolvedor Rails desde 2006 Diversos sistemas desenvolvidos Dois mini-cursos Dois cursos de longa durao (40 horas)

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

Sobre a platia

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

Hello World

3.times { puts Hello SERPRO }

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

Ruby: A linguagem
Criada em 95 Smalltalk+Perl+Python = Ruby? Ruby is designed to make programmers happy Interpretada
Irb (Interpretador)

Tudo um objeto
> 1.class => FixNum

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

Ruby: A linguagem
Linguagem dinmica Fcil de aprender mas poderosa Metaprogramao Herana simples Zero verdadeiro! RubyGems Expresses regulares, Big Numbers, Hashs, Arrays Foco no programador (princpio da mnima surpresa)

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

Construes bsicas - Classes


class Duck def talk Qua qua qua end end d = Duck.new d.talk

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

Construes bsicas - Seleo


if test_condition puts True else puts False end a = Str1 b = true a = Str2 unless b == true a=?

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

Construes bsicas - Repetio


for i in 1..2 puts i end i=0 while i < 3 puts i i=i+1 end
II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

10

Framework?

???
II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

11

Framework

Wikipedia: Em desenvolvimento de software, um framework ou arcabouo uma abstrao que une cdigos comuns entre vrios projetos de software provendo uma funcionalidade genrica.

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

12

Personal Framework Tabajara


Double-click to add graphics

Construir seu prprio framework? Como ensinar novas pessoas a usar? Como atualizar? Como corrigir bugs?

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

13

Bons tempos ...


"Voc est ancioso pelos timos dias do Minix 1.1, quando os homens eram homens e escreviam seus prprios drivers de dispostivo?

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

14

que no voltam mais?


David Heinemeier Hansson 37 Signals Mais de trs milhes de usurios Extrado do Basecamp Julho de 2004 One Ring to Rule Them All?

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

15

Rails: Conceitos bsicos


Pureza arquitetural de Java com a imediaticidade de PHP Convention over configuration Testes integrados Fcil integrao com base de dados MVC (Model-View-Controller) Rake (Make para Rails) YAML DRY
II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

16

Estrutura de diretrios I
app
controllers helpers models views

config db log public


images javascripts stylesheets
II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

17

Estrutura de diretrios II
script
generate destroy console server -> WEBrick (SOMENTE DESENVOLVIMENTO!)

test
fixtures functional integration unit

vendor/plugins

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

18

Scaffold
Scaffold = base Te d a base para a construo das views Aes CRUD Blog em quinze minutos ? http://rubyonrails.org/screencasts

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

19

Criando uma aplicao


$ rails my_app $ cd my_app $ script/generate scaffold Test title:string number:integer $ rake db:migrate $ script/server http://localhost:3000 http://localhost:3000/tests

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

20

Models
SGBS's disponveis: http://wiki.rubyonrails.org/#database_support Tabelas tem por padro o nome do modelo no plural Cada entidade uma classe (mais comum) Mtodos getters e setters com os nomes dos atributos Relacionamentos has_one :car belongs_to :imoble has_many :houses
II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

21

Mais Models
Validators validates_uniqueness_of :username validates_presence_of :username migrations find, new, create, destroy config/database.yml

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

22

Controllers
Realizam operaes na base de dados e mostram a viem correspondente. URLs: http://dominio/controlador/metodo/parametros Para cada mtodo do controlador existe uma view Views enxergam as variveis de instncia (comeam com @) $ script/generate controller toads $ script/destroy controller toads params[:sender_name] ou params[:model_name]

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

23

Views
HTML com cdigo Ruby embutido Partials <%= render :partial => 'nome' %> app/views/layouts Application.? Helpers <%= javascript_include_tag :defaults %> <%= stylesheet_link_tag 'application' %>

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

24

Fixtures e Unit Tests


Test Driven Development Fixtures Dados falsos em YAML Testes unitrios def test_should_be_invalid user = User.create assert !user.valid?, "Usuario nao deve ser criado sem um nome" end
II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

25

$ rake test:units Testes funcionais


def test_should_get_show get(:show, {'id' => "12"}, {'user_id' => 5}) assert_response :success assert_not_nil assigns(:posts) end

Testes de integrao

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

26

Plugins
attachment_fu (Upload de imagens) acl_system2 (Controle de acesso) tiny_mce (Editor WYSIWYG) brazilian-rails (Padres para o portugus) flashobject-helper act_as_state_machine restfull_authentication (Autenticao) validates_as_cpf validates_as_cnpj act_as_taggable_on_steroids

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

27

Ajax
<p id="data"> </p> <%= link_to_remote "atualiza", :url =>{ :controller => :users, :action => :show_date}, :update => "data" %> def show_date render :text => DateTime.now.to_s end

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

28

Rails no dia dia


SQLite De ER para migrations Scaffold Plugins Mais tempo disponvel para criar aplicaes inovadoras e de qualidade (testes)

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

29

Links I
Basecamp: http://basecamphq.com/ Apresentao FISL 6.0 http://media.rubyonrails.org/presentations/fisl6.pdf Site oficial da linguagem: http://www.rubylang.org/pt/ Site oficial do framework: http://rubyonrails.org/ Meus favoritos: http://delicious.com/vinicius_ah/rubyonrails Guide To Testing Rails:http://guides.rubyonrails.org/testing.html

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

30

Links II
Como comear (pt): http://groups.google.com/group/railsbr/web/lugares-para-aprender-ruby-on-railsror Grupo Rails-RS: http://groups.google.com/group/rails-rs API Rails: http://api.rubyonrails.org Matz falando sobre Ruby http://www.informit.com/articles/article.aspx ?p=18225
II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

31

Recomendaes finais
No Silver Bullets

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

32

Don't follow the lemmings

II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

33

Perguntas e contato
Dvidas? Sugestes? Doaes de grandes quantias?

E-mail/Gtalk: viniciushax@gmail.com Twitter: http://twitter.com/vinicius_ah Delicious: http://delicious.com/vinicius_ah Site: http://www.atratweb.com.br


II Forum de Tecnologia em Software Livre - Serpro - Porto Alegre

34

Você também pode gostar