Ruby On Rails (Unisul)

Preview:

DESCRIPTION

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

Citation preview

RUBY ON RAILSUma cultura de boas práticas

O QUE É ?

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”.

O QUE É UM FRAMEWORK ?

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

Yukihiro Matsumoto “Matz”

Ada

DylanEiffel

Perl Python

SchemeSmalltalkLisp

Linguagem dinâmica e reflexiva

Linguagem humana

Simplicidade

Extensibilidade

Produtividade

PARA O PROGRAMADOR

JAVA

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

RUBY

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

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; }

}

RUBY

class Pessoa attr_accessor :nome end

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

Ocidente (2000)

David Heinemeier Hansson

BASECAMP

Convenção sobre configuração

DRY (Don’t Repeat Yourself)

Código bonito

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

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

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

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

CONVENÇÃO SOBRE CONFIGURAÇÃO

Nomes das tabelas no banco de dados

Nomes dos arquivos

Mapeamentos

Chaves do DB

Nomes das classes

Ambientes

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

DRY (DON’T REPEAT YOURSELF)

Gems Plugins

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

E na prática ???

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

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

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

EXPERIMENTE ...

@joelsondeabreu

http://www.slideshare.net/joelsondeabreu

PERGUNTAS ???