Douglas Resende Camargo
douglas@maxstudio.com.br
MDL na RubyConf‟12
Locawebets
História
Ruby Criada em 1993 por Yukihiro “Matz” Matsumoto
Somente em 1998 Ruby começou a aparecer no ocidente
atraves de Dave Thomas e Andy Hunt
Em 2003, o framework Rails começou a ser escrito pelo
Dinamarques David Hansson
Em 2004 Rails foi publicado
Em 2010 lançamento do Rails 3.0
Um pouco de Ruby
5.times { print ‚Blaaa‛ }
> Cinco vezes imprima “Blaaa”
exit unless ‚flisol‛.includes? ‚iso‛
> Termine a menos que “flisol” contenha(ou inclua) a palavra
“iso”
[‘fred’, ‘guilherme’, ‘pedro’].each do |pessoa|
puts pessoa.capitalize
end
> Com as palavras „fred‟, „guilherme‟ e „pedro‟: pegue cada
pessoa e a imprima com a primeira letra maiúscula
MVC
Convenções - REST
Exibir/Buscar Criar Alterar Remover
REST/HTTP GET POST PUT DELETE
Rails (actions) show create update destroy
SQL select insert update delete
Instalação
MAC OSX & UBUNTU
http://github.com/danielvlopes/ruby-unix/
WINDOWS
http://railsinstaller.org/
Iniciando um Projeto
# Criando uma aplicação
rails new flisol -d postgresql
cd flisol/
# Inicia o servidor
rails server
# URL local da aplicação
http://localhost:3000/
Estrutura de Pastas
Arquivo Função
config/database.yml Contém informações para conexão
com o banco de dados
config/routes.rb Rotas das requisições HTTP
app/controllers Arquivos escritos em Ruby da
camada de controle
app/helpers Classes que facilitam algumas tarefas
da view
app/models Arquivos escritos em Ruby da
camada de modelo
app/views Contém uma pasta pra cada controller
que sua aplicação tiver
db/migrate Arquivos de migração, usados para
atualizar seu Banco de Dados
Scaffold
# Gerando modelo, controle e visões
rails generate scaffold user first_name:string
last_name:string
db/migrate/20130426210526_create_users.rb
# Cria Banco de Dados
rake db:create
# Atualiza o Banco para versão mais nova
rake db:migrate
# Criando usuário via console
User.create first_name: “Maria”, last_name: “Silva”
Scaffold
config/routes.rb
app/controllers/users_controller.rb
app/views/users/*
app/models/user.rb
def full_name
[first_name, last_name].join(“ “)
end
Operações Básicas
# Quantidade de registros de usuários
User.count
# Primeiro registro de usuário
u = User.first
# Atributo first_name
u.first_name
# Método full_name
u.full_name
# Atualizar um atributo
u.update_attribute(:last_name, “Ultimo Nome”)
Validações
# Validando a presença de :first_name
validates :first_name, :presence => true
# => true
User.create(:first_name => “Jaum”).valid?
# => false
User.create(:first_name => nil).valid?
# Mostrando erros
u = User.create
u.errors # => {:first_name=>[“can’t be blank”]}
u.save # => false
u.save! # => ActiveRecord::RecordInvalid:
Validation failed: First name can’t be blank
Validações
# Outros tipos de validação
validates_presence_of :name, :year
validates_numericality_of :year
validates_inclusion_of :year, :in => 2009..2099
validates_length_of :name, :minimum => 4
validates_format_of :name, :with => /[A-Z]d+/
GEM
# Onde encontrar
http://rubygems.org/
# Código fonte aberto
http://github.com/plataformatec/simple_form
# Instalando uma gem
Gemfile
gem “simple_form”
bundle install
Links
https://www.facebook.com/groups/rubyoncerrado/
http://rubyonrails.com/
http://apidock.com/ruby
http://www.ruby-doc.org/
http://guides.rubyonrails.org/
http://railscasts.com/
http://akitaonrails.com/
http://github.com/
http://why.nomedojogo.com/
OBRIGADO!
Douglas Resende Camargo
douglas@maxstudio.com.br

Introducao rubyonrails

Notas do Editor

  • #2 - Alguemaquijáprogramaemalgumalinguagem?- Conhece Ruby, conhece Rails?- Praquemconheceessapalestraébemintrodutóriamesmo…- Trabalhona MDL Sistemas, e tambémsouinicianteem Ruby, conheço e trabalho com Ruby a menos de 1 ano
  • #3 Existe um eventochamadoRubyConfemSãoPauloqueérealizadotodoano e no anopassado a nossaequipefoiaté o evento- Essasloucasaitrabalhamcomigo =)
  • #4 - O eventoépatrocinadopelaLocaweb…. Maisseilah, tem gentequenãogosta da Locaweb…. Eugosto =)
  • #5 Então, euvoucontar um pouco da história do Ruby pravocês…Criadaem 1993 por Yukihiro Matsumoto, surgiu no ocidenteem 98 atraves de Dave Thomas e Andy HuntEm 2003 o framework Rails começou a serescritopelodinamarques David Hansson e somenteem 2004 foipublicadasuaprimeiraversãoEm 2010 foi um grandemarcoquandosurgiu o Rails 3.0
  • #6 # Testarcódigos no consoleA leitura do Ruby émuitoclara, como nesses exemplos:CincovezesimpraBlaaaTermine a menosque “flisol” contenha (ouinclua) a palavra “iso”Com as palavras “fred”,”guilherme” e “pedro”: peguecadapessoa e a imprima com a primeiraletramaiúscula
  • #7 Um poucosobre o MVC do RailsO Browser fazumarequisiçãopara o WebServerQuebusca no arquivo de rotas o quefazer com a URL requeridaE então o Dispatcher encontra o controller.O controller solicita/ounão, aoumachamada no model, quepodefazerumarequisiçãoaobanco de dados e retornaosvaloressolicitadosO controller renderiza a View e respondeaoWebServerqueentrega a requisiçãofeitapelo Browser
  • #8 Um pouco de Convenção RESTExistemosmétodos de requisições GET, POST, PUT e DELETEA convenção SUGERE queusemos GET para o método show no rails, POST para create, PUT para update e DELETE para destroyIssonãoquerdizerquevocêé obrigado a obedeceressa “sugestão”A ação show, seria o select do SQL, create seria o insert, update o proprio update e o destroy o delete
  • #9 Nãoqueroperdermuito tempo ensinandocomoinstalar Ruby ou o Rails, entãodeixeiessesdois links aquiO repositório do danielvlopesestásempreatualizado com um dos maisfáceispasso-a-passosobreinstalação de Ruby emambiente UnixE para windows, vcpodebaixar o instaladoratravés do site railsinstaller.orgÉmuitosimpesl =)
  • #10 Vamosiniciarcriando um projeto do RailsNo comando RAILS NEW, passamos o nome do projetoquequeremosiniciar o desenvolvimentoOpcionalmenteeupassei a opção “-d postgresql” jáinformando a qualbanco de dados euireiusarAbrimos a basta do projeto e entãopodemosexecutar o nossoservidorpratesteA URL de acessoserialocalhostpassando a porta 3000 (executaroscomandos no terminal)
  • #11 Vamosfalar um poucosobre a estrutura de pastas queforamgeradasOArquivoconfig/database.yml, contéminformaçõesparaconexão com o banco de dadosConfig/routes.rbguarda as rotas das requisições HTTPApp/controllers arquivosescritosem Ruby da camada de controleApp/helpers classes quefacilitamalgumastarefas da viewApp/models arquivosescritosem Ruby da camade de modeloounegócioApp/views contémuma pasta pracada controller quesuaaplicaçãotiverDb/migrate arquivos de migração, usadospraatualizarseubanco de dados
  • #12 Falando um poucodessafunçãomágica do rails, o SCAFFOLDNãoé a forma recomendadapra se fazerumaaplicação, maispraajudaragentenessaapresentaçãoireiusarele e explicaroqueelefazNóspassamos a função rails generate scaffolg, logo dizemos o nome do model, no singular e de preferencia ingles, e osatributoscomofirst_name do tipo string e last_name do tipo stringUm dos arquivosgeradopelo scaffold foiumamigraçãopara o banco de dados, Primeiramentenósprecisamoscriar o banco de dados com “rake db:create”E executar a função “rake db:mgirate” paraexecutarnossoarquivo de migraçãocriadopeloscaffolgAgora abrimos o console e vamoscriar um novo usuário de forma manual
  • #13 O Scaffold adicionou no nossoarquivo de rotas, umachamadapara o controller :usersNousers_controllerencontramososmétodos index, show, new, edit, create, update e destroyNo método index, vemosqueeletentatrazerTodososusuários e atribuir o resultadopraumavariável @users e responder no formato html oujsonEssavariavel @users tem um arroba “@” nafrente, quepermiteseracessivelnacamada de visãoEm views/users/index.html.erbdiz “peguecadausuário” e imprimaseufirst_name e last_name. Tambémémostrado links para “Exibir”, “Editar” e DeletarVamosabrir o model de usuário e vemosque o model estáliberandoacessoaosatributos :first_name e :last_nameVamoscriar um métodoaquichamadofull_nameE vamostestarele no show.html.erb
  • #14 Voltandoao console, vamosfalar um poucosobreoperaçõesbásicas no ModelA partir do momentoqueseuobjetoherdacaracterísticas do ActiveRecord, elevemcheio de métodosprafacilitarsuavida no desenvolvimentoContando a quantidade de registros de usuários com User.countTrazendo o primeiroregistro de usuário e atribuindoele a variavel “u”Pegandoatributofirst_name de “u”Acessando o métodofull_name de “u”Atualizando um atributo com update_attribute
  • #15 Vamosvalidar a presença de :first_name,issoquerdizerqueesseatributodeveráterseupreenchimentoobrigatório.Abrindo o model de User vamosadicionar a linha do validatesNo console vamostestar a inclusão do usuárioJãum e verificar se o registroévalidoAgora testaremos um registroinvalidoAinda no console, conseguimosteracessoaoserros da nossaaplicação com o método errorsPodemosanalisar a se o objetopodeser salvo com .saveE podemosretornar um erro com .save! (beng)
  • #16 Queroapresentartambémoutrasformas de validaratributos no modelValidando a presende de :nome e :ano, vocêpodevalidarmais de um atributonamesmalinhaValidando ANO comonumericoValidandoinclusao de ANO entre 2009 a 2099Validando o tamanho de nome com no mínimo 4 caracteresE validando um format with expressão regular
  • #17 A comunidade Ruby possuiumacomunidadebastanteativa de programadoresquecompartilhamcódigo. Para facilitaressecompartilhamento, a comunidade Ruby inventou as chamadasRubyBems, ou “GEMs”. Vocêpodeencontra-las no rubygems.orgUm exemplo de gem seria a simple_form, queauxilianacriação de formulários. Seucódigopodeseracessado no githubComo instalaruma GEM, abra o arquivoGemfile, e inclua gem passando o nome da gem entre aspas, opdionalmentevocêpodepassar a versão da gem quequerusarLogo, no terminal digitamos bundle install paraatualizar as gems
  • #18 Tambémquerolembrarquemantemosumacomunidade no facebook, o ruby on cerradoE deixaralguns links paraestudosobre Ruby e RailsPerguntas?
  • #19 Esperoqueiniciem um estudosobre rails e quetenhamgostadodessaapresentação.Obrigado!