Top Banner
CELTAB Centro Latino-Americano de Tecnologias Abertas
46

Começando com Ruby - III SEICOM

Jul 06, 2015

Download

Technology

Kenner Kliemann
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Começando com Ruby - III SEICOM

CELTABCentro Latino-Americano de Tecnologias Abertas

Page 2: Começando com Ruby - III SEICOM

RubyCOMEÇANDO COM RUBY: DOS CONCEITOS AO PRIMEIRO CÓDIGO

Page 3: Começando com Ruby - III SEICOM

SEICOM + ruby

Page 4: Começando com Ruby - III SEICOM

Por que ruby ?!

Page 5: Começando com Ruby - III SEICOM
Page 6: Começando com Ruby - III SEICOM

● O que é o ruby?● Onde e como nasceu?● Para que serve?

Page 7: Começando com Ruby - III SEICOM

Ruby Outras LPs

Page 8: Começando com Ruby - III SEICOM

Vamos instalar o ruby?

OBS: SO GNU/Linux!

Page 9: Começando com Ruby - III SEICOM

Apt-get

apt-get install ruby-1.9.3

apt-get install ruby-2.1

???

Page 10: Começando com Ruby - III SEICOM

Compilando

ruby-lang.org/en/downloads/

$ tar xfv ruby-2.1.3.tar.gz

Page 11: Começando com Ruby - III SEICOM

Ruby Version Manager

RVM é uma ferramenta de linha de comando que permite instalar, gerenciar e trabalhar com múltiplas versões de ruby e diversos conjuntos de gems.

Page 12: Começando com Ruby - III SEICOM

rvm.io

$ \curl -sSL https://get.rvm.io | bash -s stable

Page 13: Começando com Ruby - III SEICOM
Page 14: Começando com Ruby - III SEICOM
Page 15: Começando com Ruby - III SEICOM
Page 16: Começando com Ruby - III SEICOM

“Ruby está projetado para fazer os programadores felizes.”

Yukihiro “Matz” Matsumoto - Criador do Ruby

Page 17: Começando com Ruby - III SEICOM

Ruby

● Interpretada (YARV)● Totalmente Orientada a Objetos● Dinâmica● Fortemente Tipada● Gramática complexa, mas expressiva● Uma $ RICA $ Core API● Inspirada em Smalltalk, Lisp e Perl

Page 18: Começando com Ruby - III SEICOM

➔ Scripts➔ Programação OO➔ Programação Funcional➔ Metaprogramação

Page 19: Começando com Ruby - III SEICOM

Em ruby, tudo é objeto, sem exceções!

Page 20: Começando com Ruby - III SEICOM

Variáveis não são objetos…

… elas fazem referências a eles

Page 21: Começando com Ruby - III SEICOM

Types

value = 123 # => Fixnum

value = “1234” # => String

number = 1234string = “I’m a string”

# Podemos somar ?

puts number + string# => TypeError: String can't be coerced into Fixnum

Page 22: Começando com Ruby - III SEICOM

Duck Typing

“Se anda como um pato e faz barulho como um pato, então de deve ser um pato. E o interpretador ficará feliz em fazer com que o objeto seja tratado como um pato. Na prática, isso significa que em vez de fazer verificações de tipo de um objeto, você deve se preocupar se este objeto é capaz de executar o método que você precisa.”

- Nando Vieira

Page 23: Começando com Ruby - III SEICOM

Duck Typing

class Marmot def initialize(message) @message = message end

def quack puts “Quack: #{@message}” endend

class Duck def initialize @name = “John Doe” end

def quack puts “Quack, my name is #{@name}” endend

duck_1 = Marmot.new “Marmots”duck_2 = Duck.new

duck_1.quack # => “Quack: Marmots”duck_2.quack # => “Quack, my name is John Doe”

Page 24: Começando com Ruby - III SEICOM

Strings

message = “Galera!”o_message = ‘Hey’

o_message + “, e” + “ ai ” + message

#=> “Hey, e ai Galera!”

Page 25: Começando com Ruby - III SEICOM

Strings

message = “Galera!”o_message = ‘Hey’

“#{o_message}, e ai #{message}”#=> “Hey, e ai Galera!”

“Agora somando #{3 + 5}”#=> “Agora somando 8”

Page 26: Começando com Ruby - III SEICOM

Números

Page 27: Começando com Ruby - III SEICOM

Números

Page 28: Começando com Ruby - III SEICOM

Arrays

items = [ 1, “String”, 1.0, [ 2, 3], nil ]# => [ 1, “String”, 1.0, [ 2, 3], nil ]

items[0] <=> items.first# => 1

items = Array.new# => [ ]

items = Array.new([ 1, 2, 3 ])# => [ 1, 2, 3 ]

words = %w[aa bb cc dd ee ff]# => [ “aa”, “bb”, “cc”, “dd”, “ee”, “ff” ]

words[1]# => “bb”

Page 29: Começando com Ruby - III SEICOM

Hash

hash = { name: “John”, last_name: “Doe”, zombie: false, age: 1e10 }

# => { name: “John”, last_name: “Doe”, zombie: false, age: 1e10 }

hash[:name]# => “John”

hash[:new_value] = { b: “something”, ‘another_value’ => “wow” }

hash.inspect# => { name: “John”, last_name: “Doe”, zombie: false, age: 1e10, { b: “something”, ‘another_value’ => “wow” } }

Page 30: Começando com Ruby - III SEICOM

Symbols

Page 31: Começando com Ruby - III SEICOM

Expressões regulares

Page 32: Começando com Ruby - III SEICOM

Módulos

Page 33: Começando com Ruby - III SEICOM

Classesmodule Zombie class Zombie def initialize @name = "John Doe" @brains_eaten = 0 end def tweet "I want brains!" end def eat(n = 1) @brains_eaten += n end def rooting "Yeap" end def status { :status => "I just ate some delicious brains",

:zombie => @name } end endend

Page 34: Começando com Ruby - III SEICOM

Herança

Obs: ‘Não existe herança múltipla em ruby’

class Walker < Zombie def walk # do something endend

Page 35: Começando com Ruby - III SEICOM

Mixinsmodule SuperHero def super_powers # Do something endend

module Fly def fly #Do something endend

class Goku include SuperHero include Fly

def saiyan @@force *= :infinite endend

class Hulk include SuperHero

def say "Hulk smash!" endend

Page 36: Começando com Ruby - III SEICOM

Self e SingletonClass

Métodos de classe não existem no Ruby!

Pelo menos não no sentido de métodos estáticos.O que acontece é que estes métodos pertencem a um objeto, que por acaso é uma classe.

- Nando Vieira

Page 37: Começando com Ruby - III SEICOM

E o que mais?

● Condicionais (if, else, elseif, unless)● Seletor Múltiplo (Case)● Estruturas de repetição(for...in, while..until, loop)● Iteradores (Enumerator, Iterator)● Closures● Procs e Lambdas● Variáveis (Classe, instância)● Constantes● CallBacks● Monkey Patching e Refinements

Page 38: Começando com Ruby - III SEICOM

Como continuar?

Page 39: Começando com Ruby - III SEICOM

Try ruby!

tryruby.org

Page 40: Começando com Ruby - III SEICOM

Como continuar?

codeschool.com/paths/ruby

Page 41: Começando com Ruby - III SEICOM

github.com/markets/awesome-ruby

lista de 100+ ferramentas ruby para tudo!

Page 42: Começando com Ruby - III SEICOM

github.com/bbatsov/ruby-style-guide

De quem “manja” para a comunidade!

Page 43: Começando com Ruby - III SEICOM
Page 44: Começando com Ruby - III SEICOM

Considerações finais

Page 45: Começando com Ruby - III SEICOM

[email protected]

github.com/gnomex@KennerKliemann

slideshare/kennerkliemannlinkedin.com/in/kennerkliemann

Page 46: Começando com Ruby - III SEICOM