Upload
felipe-elias-philipp
View
499
Download
0
Embed Size (px)
DESCRIPTION
Apresentado em 24/03/2008
Citation preview
Ruby on Rails
O que é Ruby on Rails?
Ruby on Rails Linguagem + Framework
Um pouco de história
Tecnologia Japonesa
Criada por Yukihiro “Matz” Matsumoto
Foi lançada em 1995
Tem traços de várias outras linguagens
Open Source
Características do Ruby
Sintaxe Simples
Orientação a Objetos e Herança Simples
Classes abertas e Tipagem dinâmica
Metaprogramação e DSLs
Standard Library e RubyGems
Multiplataforma
Princípios do Ruby
"Você deve fazer códigos que resolvam seus problemas, e não os problemas da linguagem e/ou
interpretador/compilador"
Exemplo de código
5.times { print “Hello!” }
exit unless “restaurant”.include? “aura”
[‘toast’,‘cheese’,‘wine’].each { |food| print food.capitalize }
class Person
attr_reader :name #cria um getter para o atributo name
attr_accessor :hair #cria getter e setter
def initialize(name, hair)
@name, @hair = name, hair
end
def walk
“Walking”
end
end
Lennon = Person.new(“John”, “Dark”)
Lennon.class_eval do
def play_guitar
“playing”
end
end
receita "Bolo de Fubá" do
ingrediente "Farinha", "1 kilo" ingrediente "Açúcar", "200 gramas" ingrediente "Ovos", "2 unidades"
preparo "Misture todos ingrediantes" preparo "Leve ao forno" preparo "Sirva"
tempo "2 horas"
porcoes 3
end
Um pouco de História
Lançado em Julho/2004
Criado por David Heinemeier Hansson
Open Source
Foco para desenvolvimento Web
Atualmente está na versão 2.0
Características do Rails
(Meta)Framework
Metaframework
ActiveRecordActionPackActionMailerActiveSupportActiveResource
MVCModel-View-Controller
Extensível
Suporte a diversos Bancos de dadosMySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2
Agilidade
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
TopicoForm topicoForm = (TopicoForm)form; Topico topico = new Topico(); topico.setTitulo(topicoForm.getTitulo()); topico.setDescricao(topicoForm.getDescricao()); TopicoDAOMysql topicoDao = new TopicoDAOMysql(); try{ topicoDao.adiciona(topico); } catch(Exception e){ throw new Exception("Erro ao adicionar topico " +e); } ActionForward forward = mapping.findForward("Cadastrado"); return forward; } public void adiciona (Topico topico) throws Exception{ Connection conn = null; 64 ConexaoBD conBD = ConexaoBD.getInstancia(); conn = conBD.getConnection(); PreparedStatement pstmt = null; String sql = ""; int rowsAfected = 0;
try {
if (conn == null) throw new Exception("Conexão não foi estabelecida."); sql = "insert into Topicos (" + " titulo, descricao, data_postagem) " + " values((?), (?), now())"; pstmt = conn.prepareStatement(sql); pstmt.setString(1,topico.getTitulo()); pstmt.setString(2,topico.getDescricao()); rowsAfected = pstmt.executeUpdate(); if (rowsAfected <= 0) { throw new Exception("Erro na inserção do tópico. Por favor, tente novamente."); }
}catch(SQLException se) { throw new SQLException("Erro em TopicoDAOMysql.adiciona(): " + se.getMessage()); }catch (Exception e) { throw new Exception("Erro em TopicoDAOMysql.adiciona(): " + e.getMessage()); }finally { if(pstmt != null) pstmt.close(); conBD.returnConnection(conn); } }
def create @topico = Topico.new(params[:topico]) if @topico.save flash[:notice] = 'Topico criado com sucesso.' redirect_to :action => 'list' else render :action => 'new' end end
Extraído de uma necessidade realBasecamp da 37signals
FREE!
Princípios do Rails
DRY!Don't Repeat Yourself
CTRL + C / CRTL + V
Convention Over Configuration
Tradução de Convention Over Configuration
Para desenvolvedores: menos código
Para clientes: menos tempo
Para vendedores: mais lucro
Mais sobre Rails
Suporte nativo a Ajax
Integração com controladores de versão
Sistema de cache de páginas
Suporte a Test Driven Development
Para onde o Rails vai?
Livros – Pragmatic Programmers
Livros – O’Reilly
Livros em Português
Cursos
• Unisinos• TechOffice/POA• Target Trust/POA• E-Genial (EAD)• SENAC/SC• PUC/MG• Object Training/SP
Who’s on Rails?
Implementação do Ruby dentro da JVM
Compilação de código Ruby par a bytecode Java
Estável e em utilização
Promete ganhos de performance consideráveis
Ruby on Rails já instalado no Mac OS X Leopard
Sistema de Microblogging
100% feito em Rails
Diversas APIs, integração com SMS, Gtalk, etc...
11.000 hits por segundo
Indexador de blogs brasileiros
100% feito em Rails
Desenvolvido em 4 dias
Porque Ruby on Rails?
Grails – Java
CakePHP – PHP
Django – Python
Monorail - ASP.NET
Waves, Merb - Ruby
Show me the code!