35
RUBY ON RAILS Uma cultura de boas práticas

Ruby On Rails (Unisul)

Embed Size (px)

DESCRIPTION

Palestra na Universidade do Sul de Santa Catarina sobre Ruby on Rails

Citation preview

Page 1: Ruby On Rails (Unisul)

RUBY ON RAILSUma cultura de boas práticas

Page 2: Ruby On Rails (Unisul)

O QUE É ?

Page 3: Ruby On Rails (Unisul)

O QUE É UM FRAMEWORK ?

“Um framework provê uma solução para uma família de problemas semelhantes”.

“Um framework captura a funcionalidade comum a várias aplicações. As aplicações devem ter algo razoavelmente grande em comum: pertencem a um mesmo domínio de problema”.

“São projetados com para facilitar o desenvolvimento de software, habilitando designers e programadores a gastarem mais tempo determinando as exigências do software do que com detalhes

tediosos de baixo nível do sistema”.

Page 4: Ruby On Rails (Unisul)

O QUE É UM FRAMEWORK ?

Page 5: Ruby On Rails (Unisul)
Page 6: Ruby On Rails (Unisul)

POR QUE USAR ???

* Padronização de projetos

* Disposição de recursos

* Re-uso de código

* Flexibilidade e extensibilidade dos projetos

* Fácil manutenção

* Produtividade

Page 7: Ruby On Rails (Unisul)
Page 8: Ruby On Rails (Unisul)

Yukihiro Matsumoto “Matz”

Page 9: Ruby On Rails (Unisul)

Ada

DylanEiffel

Perl Python

SchemeSmalltalkLisp

Page 10: Ruby On Rails (Unisul)

Linguagem dinâmica e reflexiva

Linguagem humana

Simplicidade

Extensibilidade

Produtividade

Page 11: Ruby On Rails (Unisul)

PARA O PROGRAMADOR

Page 12: Ruby On Rails (Unisul)

JAVA

public void imprime_impares(int limite){ for (int i = 1; i <= limite; i++) { if (i%2 == 1) { System.out.println(i); } }}

Page 13: Ruby On Rails (Unisul)

RUBY

def imprime_impares(limite) 1.upto(limite){ |i| puts i if i%2 == 1 }end

Page 14: Ruby On Rails (Unisul)

JAVA

public class Pessoa {

private String nome;

public Pessoa(String nome) { this.nome = nome; }

public String getNome() { return nome; }

public void setNome(String nome) { this.nome = nome; }

}

Page 15: Ruby On Rails (Unisul)

RUBY

class Pessoa attr_accessor :nome end

Page 16: Ruby On Rails (Unisul)

LEGÍVEL E HUMANA

10.times { print "Ruby!"}# => Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!

print "Ruby é muito legal".split.reverse# => legalmuitoéRuby

Page 17: Ruby On Rails (Unisul)

Ocidente (2000)

Page 18: Ruby On Rails (Unisul)

David Heinemeier Hansson

Page 19: Ruby On Rails (Unisul)

BASECAMP

Page 20: Ruby On Rails (Unisul)

Convenção sobre configuração

DRY (Don’t Repeat Yourself)

Código bonito

Page 21: Ruby On Rails (Unisul)

CONVENÇÃO SOBRE CONFIGURAÇÃO

controllers people_controller.rb countries_controller.rb data_banks_controller.rbmodels person.rb country.rb data_bank.rbviews people _form.html.erb edit.html.erb index.html.erb new.html.erb

Nomes das tabelas no banco de dados

Nomes dos arquivos

Mapeamentos

Chaves do DB

Nomes das classes

Ambientes

Page 22: Ruby On Rails (Unisul)

CONVENÇÃO SOBRE CONFIGURAÇÃO

Tabelas

people countries data_banks

Nomes das tabelas no banco de dados

Nomes dos arquivos

Mapeamentos

Chaves do DB

Nomes das classes

Ambientes

Page 23: Ruby On Rails (Unisul)

CONVENÇÃO SOBRE CONFIGURAÇÃO

People id country_id

DataBanks id person_id

Countries id

Nomes das tabelas no banco de dados

Nomes dos arquivos

Mapeamentos

Chaves do DB

Nomes das classes

Ambientes

Page 24: Ruby On Rails (Unisul)

CONVENÇÃO SOBRE CONFIGURAÇÃO

class Personend

class Countryend

class DataBankend

Nomes das tabelas no banco de dados

Nomes dos arquivos

Mapeamentos

Chaves do DB

Nomes das classes

Ambientes

Page 25: Ruby On Rails (Unisul)

CONVENÇÃO SOBRE CONFIGURAÇÃO

Nomes das tabelas no banco de dados

Nomes dos arquivos

Mapeamentos

Chaves do DB

Nomes das classes

Ambientes

Page 26: Ruby On Rails (Unisul)

CONVENÇÃO SOBRE CONFIGURAÇÃO

Development

Test

Production

Nomes das tabelas no banco de dados

Nomes dos arquivos

Mapeamentos

Chaves do DB

Nomes das classes

Ambientes

Page 27: Ruby On Rails (Unisul)

DRY (DON’T REPEAT YOURSELF)

Gems Plugins

Page 28: Ruby On Rails (Unisul)

CÓDIGO BONITO

class Person < ActiveRecord::Base belongs_to :state has_one :user, :dependent => :destroy has_many :contacts, :dependent => :destroy has_many :data_banks, :dependent => :destroy has_many :alternate_addresses, :dependent => :destroy validates_length_of :name, :maximum => 120 validates_length_of :cep, :maximum => 9 validates_presence_of :type_person, :name, :city validates_associated :state validates_uniqueness_of :cpf default_scope :order => "created_at DESC"

before_save { self.name = name.titleize } before_save { self.city = city.titleize } end

Page 29: Ruby On Rails (Unisul)

E na prática ???

Page 30: Ruby On Rails (Unisul)

INSTALAÇÃO DO RUBY

• Windows: Cygwin é a melhor opção. One-click installer.

• Linux: apt-get install ruby rdoc irb

• Mac OS: 10.5 já instalado. Macport

Page 31: Ruby On Rails (Unisul)

LINKS DE RUBY

Documentação http://apidock.com/ruby

Tutoriais http://rubylearning.com/satishtalim/tutorial.html http://www.ruby-lang.org/pt http://www.ruby-doc.org/docs/ProgrammingRuby

Fóruns http://ruby-br.org http://www.rubyinside.com http://groups.google.com/group/rails-br

Gens e plugins http://rubygems.org http://ruby-toolbox.com

Projetos http://rubyforge.org

Page 32: Ruby On Rails (Unisul)

LINKS DE RAILS

Documentação http://api.rubyonrails.org http://apidock.com/rails

Tutoriais http://guias.rubyonrails.pro.br http://akitaonrails.com/ http://rubyonrails.org http://edgerails.info

http://ruby.railstutorial.org http://www.railsplugins.org

Screencasts http://railscasts.com

Projetos http://www.opensourcerails.com

Page 34: Ruby On Rails (Unisul)

EXPERIMENTE ...

Page 35: Ruby On Rails (Unisul)

@joelsondeabreu

http://www.slideshare.net/joelsondeabreu

PERGUNTAS ???