Slide 1

Slide 1 text

Desenvolvimento Ágil com Ruby on Rails terça-feira, 30 de abril de 13

Slide 2

Slide 2 text

http://bit.ly/agile-webdev-rails terça-feira, 30 de abril de 13

Slide 3

Slide 3 text

terça-feira, 30 de abril de 13

Slide 4

Slide 4 text

terça-feira, 30 de abril de 13

Slide 5

Slide 5 text

"Programmers should always be interested in learning new languages, preferably from an unfamiliar paradigm" "97 Things Every Programmer Should Know" terça-feira, 30 de abril de 13

Slide 6

Slide 6 text

terça-feira, 30 de abril de 13

Slide 7

Slide 7 text

Ruby on Rails é um framework em Ruby terça-feira, 30 de abril de 13

Slide 8

Slide 8 text

https://www.ruby-toolbox.com/categories/web_app_frameworks Sinatra, Padrino, Merb, Espresso terça-feira, 30 de abril de 13

Slide 9

Slide 9 text

Conhecendo um pouco de Ruby terça-feira, 30 de abril de 13

Slide 10

Slide 10 text

Ruby From Other Languages http://bit.ly/ruby-from-other terça-feira, 30 de abril de 13

Slide 11

Slide 11 text

Interpretado #app.rb puts “Meet2Brains” $ ruby app.rb Meet2Brains terça-feira, 30 de abril de 13

Slide 12

Slide 12 text

Uso de Blocos my_list = [1,2,3,4,5] my_list.each do |item| # deal with item end terça-feira, 30 de abril de 13

Slide 13

Slide 13 text

Tudo tem valor x = 10 y = 11 z = if x < y 1 else 2 end z # => 1 terça-feira, 30 de abril de 13

Slide 14

Slide 14 text

Tudo é objeto 10.times{ |n| puts n } terça-feira, 30 de abril de 13

Slide 15

Slide 15 text

Tudo é objeto 10.times{ |n| puts n } 10.class => Fixnum terça-feira, 30 de abril de 13

Slide 16

Slide 16 text

Tudo é objeto 10.times{ |n| puts n } 10.class => Fixnum Fixnum.class => Class terça-feira, 30 de abril de 13

Slide 17

Slide 17 text

Tudo é objeto 10.times{ |n| puts n } 10.class => Fixnum Fixnum.class => Class Fixnum.ancestors => [Fixnum, Integer, Numeric, Comparable, Object, Kernel, BasicObject] terça-feira, 30 de abril de 13

Slide 18

Slide 18 text

# This 1 + 2 # Is the same as this ... 1.+(2) # Which is the same as this: 1.send "+", 2 terça-feira, 30 de abril de 13

Slide 19

Slide 19 text

# This 1 + 2 # Is the same as this ... 1.+(2) # Which is the same as this: 1.send "+", 2 terça-feira, 30 de abril de 13

Slide 20

Slide 20 text

Metaprogramação terça-feira, 30 de abril de 13

Slide 21

Slide 21 text

terça-feira, 30 de abril de 13

Slide 22

Slide 22 text

class Car def inspect “Cheap car” end end terça-feira, 30 de abril de 13

Slide 23

Slide 23 text

class Car def inspect “Cheap car” end end other_car = Car.new other_car.inspect # => “Cheap car” terça-feira, 30 de abril de 13

Slide 24

Slide 24 text

class Car def inspect “Cheap car” end end other_car = Car.new other_car.inspect # => “Cheap car” terça-feira, 30 de abril de 13

Slide 25

Slide 25 text

class Car def inspect “Cheap car” end end porsche = Car.new porsche.inspect # => “Cheap car” def porsche.inspect “Expensive car” end porsche.inspect # => “Expensive car” other_car = Car.new other_car.inspect # => “Cheap car” terça-feira, 30 de abril de 13

Slide 26

Slide 26 text

class Car def inspect “Cheap car” end end porsche = Car.new porsche.inspect # => “Cheap car” def porsche.inspect “Expensive car” end porsche.inspect # => “Expensive car” other_car = Car.new other_car.inspect # => “Cheap car” terça-feira, 30 de abril de 13

Slide 27

Slide 27 text

class Fixnum def hours self * 3600 # number of seconds/hour end alias hour hours end # 14 hours from 00:00 January 1st Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 terça-feira, 30 de abril de 13

Slide 28

Slide 28 text

class Fixnum def hours self * 3600 # number of seconds/hour end alias hour hours end # 14 hours from 00:00 January 1st Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 terça-feira, 30 de abril de 13

Slide 29

Slide 29 text

class Fixnum def hours self * 3600 # number of seconds/hour end alias hour hours end # 14 hours from 00:00 January 1st Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 terça-feira, 30 de abril de 13

Slide 30

Slide 30 text

Time.now + 2.days # => 2013-05-01 12:40:57 -0300 #Rails terça-feira, 30 de abril de 13

Slide 31

Slide 31 text

Time.now + 2.days # => 2013-05-01 12:40:57 -0300 #Rails terça-feira, 30 de abril de 13

Slide 32

Slide 32 text

terça-feira, 30 de abril de 13

Slide 33

Slide 33 text

Dica? terça-feira, 30 de abril de 13

Slide 34

Slide 34 text

http://tryruby.org terça-feira, 30 de abril de 13

Slide 35

Slide 35 text

RubyGems terça-feira, 30 de abril de 13

Slide 36

Slide 36 text

Software Package terça-feira, 30 de abril de 13

Slide 37

Slide 37 text

Autenticação Paginação Imagens Tasks Filas... terça-feira, 30 de abril de 13

Slide 38

Slide 38 text

terça-feira, 30 de abril de 13

Slide 39

Slide 39 text

$ gem install rails terça-feira, 30 de abril de 13

Slide 40

Slide 40 text

$ gem install rails terça-feira, 30 de abril de 13

Slide 41

Slide 41 text

Ruby on Rails terça-feira, 30 de abril de 13

Slide 42

Slide 42 text

Agil terça-feira, 30 de abril de 13

Slide 43

Slide 43 text

MVC terça-feira, 30 de abril de 13

Slide 44

Slide 44 text

Rails Philosophy terça-feira, 30 de abril de 13

Slide 45

Slide 45 text

Don’t Repeat Yourself (DRY) terça-feira, 30 de abril de 13

Slide 46

Slide 46 text

Layouts, Views, Partials terça-feira, 30 de abril de 13

Slide 47

Slide 47 text

Layouts, Views, Partials # application.html.erb <%= yield %>

Slide 48

Slide 48 text

Layouts, Views, Partials # application.html.erb <%= yield %> Clientes ... terça-feira, 30 de abril de 13

Slide 49

Slide 49 text

Helpers FORMS, TAGS, HTML BLOCKS, SUPPORT, FORMATS, ... terça-feira, 30 de abril de 13

Slide 50

Slide 50 text

Helpers FORMS, TAGS, HTML BLOCKS, SUPPORT, FORMATS, ... <%= form_for @article do |f| %> <%= f.text_field :title %> <%= f.text_area :body, size: "60x12" %> <%= f.submit "Create" %> <% end %> terça-feira, 30 de abril de 13

Slide 51

Slide 51 text

Model - Scope terça-feira, 30 de abril de 13

Slide 52

Slide 52 text

Model - Scope @published = Post.where(published: true) terça-feira, 30 de abril de 13

Slide 53

Slide 53 text

Model - Scope @published = Post.where(published: true) class Post < ActiveRecord::Base scope :published, where(published: true) end terça-feira, 30 de abril de 13

Slide 54

Slide 54 text

Model - Scope @published = Post.where(published: true) class Post < ActiveRecord::Base scope :published, where(published: true) end @published = Post.published terça-feira, 30 de abril de 13

Slide 55

Slide 55 text

Convention over Configuration (CoC) terça-feira, 30 de abril de 13

Slide 56

Slide 56 text

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #config/routes.rb resources :posts #app/controllers/posts_controller.rb class PostsController < ApplicationController def index @posts = Post.published end # ... end #app/views/posts/index.html.erb

Posts

    <%= render @posts %>
#app/views/posts/_post.html.erb
  • <%= post.title %>
  • terça-feira, 30 de abril de 13

    Slide 57

    Slide 57 text

    RESTful terça-feira, 30 de abril de 13

    Slide 58

    Slide 58 text

    resources  :photos terça-feira, 30 de abril de 13

    Slide 59

    Slide 59 text

    Migrations Migrations are a convenient way for you to alter your database in a structured and organized manner terça-feira, 30 de abril de 13

    Slide 60

    Slide 60 text

    class CreateProducts < ActiveRecord::Migration def up create_table :products do |t| t.string :name t.text :description t.timestamps end end def down drop_table :products end end terça-feira, 30 de abril de 13

    Slide 61

    Slide 61 text

    Testes TDD, BDD terça-feira, 30 de abril de 13

    Slide 62

    Slide 62 text

    Extensível Autenticação, paginação, manipulação/upload de imagens, webservice, privilégios, pdf, csv, xml, json, filas, monitoramento, database drivers, ... terça-feira, 30 de abril de 13

    Slide 63

    Slide 63 text

    Quem usa? terça-feira, 30 de abril de 13

    Slide 64

    Slide 64 text

    www.adena.com.br terça-feira, 30 de abril de 13

    Slide 65

    Slide 65 text

    http://rubyonrails.org/applications terça-feira, 30 de abril de 13

    Slide 66

    Slide 66 text

    Referências http://bit.ly/ZV7NLZ terça-feira, 30 de abril de 13

    Slide 67

    Slide 67 text

    terça-feira, 30 de abril de 13