Download - Prazer,Ruby On Rails
Prazer, Ruby on Rails
Quem?
•Alberto Leal
•BLOG: http://www.albertoleal.eti.br
•GITHUB: http://www.github.com/albertoleal
O que?
•Apresentação da Linguagem RUBY
•Apresentação do Framework RAILS
•Testes Automatizados
•Hands-on
•Ferramentas
•RAILS e o Mercado
Antes de mais nada ....
Linguagem Programação
Framework
on
Yukihiro “Matz” Matsumoto
- Lançada em 1995- Linguagem de script- Código aberto e sem restrições- Simples e elegante
O Criador
“Para mim o propósito da vida é parcialmente em ter prazer. Programadores as vezes sentem prazer quando podem se concentrar na parte criativa da programação. Então Ruby foi projetado para fazer programadores
felizes.”Matz
Linguagens que influenciaram
•Perl - Linguagem Prática
•Smalltalk - Orientada a Objetos
•Lisp - Metaprogramação
•Smalltalk, Eifell - Sintaxe
•Java, Pyton - Tratamento de exceção
Características• Interpretada
• Expressiva
• Herança Simples
• Dinâmica (monkeypatching)
• Multi-paradigma
• Clousures
• Mixins
• Duck Typing
• TUDO é OBJETO
TUDO é OBJETO
array[x]=y
array.[]=(x,y)
x+y
x.+(y)
Duck Typing“Se anda como um pato e
fala como um pato, então é um pato!”
Classes não são tipos! Tipos são definidos com base no
que um objeto pode fazer.
Gems
RubyGems
Implementações
•MRI
•JRuby
•IronRuby
•Rubinius
Extraído a partir de um problema real!
MVC
ActiveRecordActionPackActionMailerActiveSupport
Meta-Framework
Convenção ao invés de
Configuração
O que torna Rails ágil?
class Post < ActiveRecord::Base has_many :comments belongs_to :author end
class Comment < ActiveRecord::Base belongs_to :post end
class Author < ActiveRecord::Base has_many :posts end
Testes Automatizados
BEHAVIOR DRIVEN DEVELOPMENT
TEST DRIVEN DEVELOPMENT
TDD
BDD
X
Testes
Unitário
Funcional
Integração
Construindo um e-commerce
Hands-on
História 1
História 2
História 3
Ferramentas
Mac OS X WindowsLinux
TextMate
emacs
emacs
RadRails + Aptana
NetbeansNetbeans
Netbeans
e outras ....
Rails e o Mercado
Empresas utilizando
Empresas utilizando
Sem Brigas, por favor
Java Ruby
Rails
.NETC
C++ C#
PerlPyton
Django
Merb
JSF
Struts...
Dúvidas?
Obrigado!