owned this note
owned this note
Published
Linked with GitHub
# DoJo Ruby
## Na Trusted
Rails é a tecnologia que vamos usar no backend das aplicações, masssssss, Rails é um framework Ruby (a nossa linguagem de programação), e por isso, para começar a aprender, vamos iniciar apenas com Ruby, bele?
## Objetivo do DoJo
A ideia é que no final desse DoJo todo mundo tenha ao menos um primeiro contato com Ruby para todo mundo ter uma base e quebrar o gelo da tecnologia.
## Mas e o Rails???
Como o Rails é um Framework em Ruby, é importante saber o que o Ruby tem para entender as maluquicies do Rails. Depois do DoJo vamos ter um (ou alguns) bootcamps para passar sobre o que o Rails traz, quais são as funcionalidades e algumas tecnologias que usamos na Trusted.
Obs: depois a gente abre uma thread no canal pra discutir dias/formato =D
## DoJo
Links:
- para rodarmos juntos: https://replit.com/
- repo com as ideas: https://github.com/arianerocha/ruby-dojo
## Snippets mais usados
```ruby=
# Print
puts 'Hello world'
```
```ruby=
# Estruturas de dados básica:
num = 1 # Int
other_num = 2.3 # Float
str = 'string #{"sem interpolação"}' # string #{"sem interpolação"}
str_int = "string #{"com interpolação"}" # string com interpolação
sym = :simbolo
arr = [1, 2, 3]
hash = { key: :value, num: 2, food: 'batata' }
Date.parse('2022-01-01')
Date.new(2022,01,01)
Time.new(2022,01,01,17,30)
```
```ruby=
# Estruturas de repetição
foods = [
{ key: :first, num: 1, name: 'batata' },
{ key: :second, num: 2, name: 'banana' },
{ key: :third, num: 3, name: 'torresmo' },
{ key: :forth, num: 4, name: 'bolacha' },
{ key: :fiveth, num: 5, name: 'vina' },
]
# map
foods_names = foods.map { |food| food[:name] }
# or
foods_names = foods.map do |food|
food[:name]
end
# each
foods.each { |food| puts "nome da comidinha: #{food[:name]}" }
# or
foods.each do |food|
puts "nome da comidinha: #{food[:name]}"
end
```
```ruby=
# Transformações de Tipos
10.to_s # "10"
10.to_f # 10.0
"10".to_i # 10
"parrot".to_i # 0
"String Legal".to_sym # :"String Legal"
:simbolo.to_s # "simbolo"
'2020-01-01'.to_date # Data
```
```ruby=
# Exemplo de classe
class Animal
def initialize(name, type)
@name = name
@type = type
end
def faz_barulho
puts 'auuaauaaauaauau'
end
end
kitana = Animal.new('Kitana', 'caozinho fofo e virado do demo')
kitana.faz_barulho
```
## Como Executar?
Se você ja está com o Ruby devidamente configurado, execute `irb` no seu terminal (*Interactive Ruby* =D). Assim você pode executar qualquer um dos comandos que listamos acima e ver o resultado.
Para executar um arquivo Ruby (.rb) basta digitar `ruby ARQUIVO.rb`.
## Extras
### Jeito Rubysta
:::warning
:memo: **Lembrete:** A intenção dessa sessão é mostrar o padrão que normalmente usamos. A ideia dos padrões é deixar o código legível, mas se o jeito "errado" fizer sentido e ficar melhor, não há porque não utilizá-lo.
:::
```ruby=
# Returns
# não costuma-se colocar o return, apesar de funcionar
# bad:
def coisa
return 'coisa'
end
# good:
def coisa
'coisa'
end
# bad:
foods.map do |food|
return food[:name]
end
# good:
foods.map do |food|
food[:name]
end
```
```ruby=
# Estrutura dos Ifs
# bad:
if condition
run()
end
# good:
run if condition
# maybe:
if condition
run_1()
run_2()
run_3()
end
# ---
# bad:
run if !condition
# good:
run unless condition
```
```ruby=
# Parenteses
# O Ruby aceita não enviarmos parenteses, mas esse uso depende de cada projeto. Normalmente, não se utiliza parenteses quando não há argumentos.
# good:
run
# bad:
run()
# good:
run(1, 2)
# maybe:
run 1, 2
```
## Indicações de estudo
A documentação do Ruby em si ja é muito boa, e tem alguns tutoriais que vocês podem seguir: https://ruby-doc.org/gettingstarted/
## Ferramentas
- Editores e Extensões
- https://app.getguru.com/card/TEGqnA8c/Coding-IDEs
- Gerenciador de versões
- https://github.com/asdf-vm/asdf
- como configurar o gerenciador asdf com ruby: https://github.com/asdf-vm/asdf-ruby
- https://github.com/rbenv/rbenv
- https://rvm.io/