Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mini curso de Ruby on Rails - Secot - 2012

Mini curso de Ruby on Rails - Secot - 2012

Slides do minicurso de Ruby on Rails no Secot 2012

Plataformatec

May 18, 2012
Tweet

More Decks by Plataformatec

Other Decks in Programming

Transcript

  1. @rlmflores Desenvolvedor Ruby desde 2009 Formado em ciência da computação

    pelo IME - USP Contribuidor de diversos projetos Open Source Membro do core-team do Devise Desenvolvedor @ Plataformatec desde 2010
  2. ... orientada a objetos ... funcional ... de script ...

    procedural ... com tipagem dinâmica e forte Ruby é uma linguagem ...
  3. ?

  4. Rails é ... ... um framework para aplicações web ...

    projetado para aumentar a produtividade e a felicidade do desenvolvedor ... full stack
  5. Git

  6. Agilidade na veia Comunidade Ruby Controle de versão com Git

    Hospedagem de código open source no Github Editor: Textmate, Vim, Gedit ou Rubymine Site oficial, Ruby Inside, Railscasts, Ruby Weekly, Blog Plataformatec, Simples Idéias Livros: Pragmatic Programmers, Getting Real, Poignant Guide,Agile Web Development, Crafting
  7. describe Stack do describe "#empty?" do it "returns true when

    have no elements'" do stack = Stack.new stack.empty?.should be_true end it "returns false when we have elements" do stack = Stack.new stack.push 1 stack.empty?.should_not be_true end end end
  8. $ bundle exec rspec spec .F Failures: 1) Returns false

    when we have elements Failure/Error: true.should be_false expected true to be false # ./spec/stack_spec.rb:9:in `block (2 levels) in <top (required)>' Finished in 0.02106 seconds 2 examples, 1 failure Failed examples: rspec ./spec/stack_spec.rb:8 # Returns false when we have elements
  9. Scenario: Successful Sign up Given I am on the home

    page When I click on "Sign up" And I fill in "Name" with "Random Company" And I fill in "E-mail" with "[email protected]" And I fill in "Password" with "123456" And I click on the "Sign up" button Then I should see a message saying "You have successfully signed in" And I should see a "Log out" link
  10. Given /^I have the following companies:$/ do |companies| companies.hashes.each do

    |company| Company.create!( :name => company["Name"], :password => company["Password"], :email => company["E-mail"] ) end end When /^I click on "([^"]*)"$/ do |link_text| click_link link_text end Then /^I should see a message saying "([^"]*)"$/ do |message_text| within(".flash") do page.should have_content(message_text) end end
  11. "Perfection is achieved, not when there is nothing more to

    add, but when there is nothing left to take away." Antoine de Saint-Exupéry
  12. Faça o mais comum vir por padrão, e o menos

    comum através de configuração
  13. Nome, email, e mensagem devem ser obrigatoriamente preenchidos E-mail deve

    ter o formato válido Mensagem deve ter no máximo 1000 caracteres
  14. class Contact < ActiveRecord::Base validates_presence_of :name, :email, :message validates_format_of :email,

    :with => EMAIL_REGEX validates_length_of :message, :maximum => 1000 end
  15. Modelo 1 x N Carros Modelo N x M Peças

    Carro 1 x 1 Customização
  16. class Model < ActiveRecord::Base has_and_belongs_to_many :parts has_many :cars end class

    Part < ActiveRecord::Base has_and_belongs_to_many :models end class Car < ActiveRecord::Base belongs_to :model has_one :customization end class Customization < ActiveRecord::Base belongs_to :car end
  17. Verbo Caminho Ação GET /products Listagem de produtos GET /products/new

    Form de criação de produto POST /products Cria um produto GET /products/:id Mostra o produto cujo ID é :id GET /products/:id/edit Form de edição de produto PUT /products/:id Atualiza o produto cujo ID é :id DELETE /products/:id Remove o produto cujo ID é :id 7 “rotas padrões”
  18. Verbo Caminho Ação GET /profile/new Form de criação do perfil

    POST /profile Cria o perfil GET /profile Mostra o perfil GET /profile/edit Form de edição do perfil PUT /profile Atualiza o perfil DELETE /profile Exclui o perfil 6 “rotas padrões”
  19. <p> Name: <%= @company.name %> </p> <p> E-mail: <%= @company.email

    %> </p> <p> Phone: <%= @company.phone %> </p>
  20. Agnosticismo do banco de dados Há uma camada entre sua

    aplicação e o banco Não importa que banco sua aplicação usa. Deve funcionar do mesmo jeito
  21. class CreateCompanies < ActiveRecord::Migration def change create_table :companies do |t|

    t.string :name t.string :email t.string :encrypted_password t.string :password_salt t.timestamps end end end
  22. Créditos de imagens TDD : http:/ /blog.binarymist.net/2012/03/24/how-to-optimise-your-testing- effort/ MVC: http:/

    /betterexplained.com/articles/intermediate-rails-understanding-models- views-and-controllers/ Cilindro de Banco de Dados: http:/ /openclipart.org/detail/94723