Skip to main content

4 posts tagged with "ruby"

View All Tags

· One min read

29/10/2022 - Aula 4 de Ruby (Remoto)

A aula começou um pouco atrasada pois o coordenador não apareceu para liberar o Google Meet para nós, mas o professor Mauricio utilizou uma conta dele para criar uma sala e nós entramos por lá.

Professor começou recapitulando a aula anterior e explicando novos itens do Next.js.

Começamos vendo sobre o useSWR que é um hook que faz o cache de dados e faz o refresh deles quando necessário.

import useSWR from 'swr'

function Profile() {
const { data, error } = useSWR('/api/user', fetch)

if (error) return <div>failed to load</div>
if (!data) return <div>loading...</div>
return <div>hello {data.name}!</div>
}

Depois arrumamos a parte de autenticação na API e utilizamos o NextAuth para fazer a autenticação.

import { signIn, signOut, useSession } from 'next-auth/client'

export default function Page() {
const [ session, loading ] = useSession()

return <>
{!session && <>
Not signed in <br/>
<button onClick={signIn}>Sign in</button>
</>}
{session && <>
Signed in as {session.user.email} <br/>
<button onClick={signOut}>Sign out</button>
</>}
</>
}

Depois disso, professor falou do trabalho, e ficou para ajudar quem tiver dúvidas.

· 2 min read

15/10/2022 - Aula 3 de Ruby (Remoto)

Nossa terceira aula começa com uma recapturação sobre a aula anterior, professor compartilhou o video que foi gravado e passou o link para que todos possam assistir.

Depois disso, começamos a falar sobre Angular, para ver se tinha pessoas que dominavam Angular e que poderiam ajudar, mas no caso, vamos utilizar React para fazer um front, pois é o que o professor domina.

Para fazermos o projeto, vamos utilizar verificar a versão do NodeJS que está instalada, para isso, vamos utilizar o comando:

node -v 

A versão LTS atual é a 16.18.0, que vai ser a versão recomendada.

Para criar o projeto, vamos utilizar o comando:

npx create-next-app@latest

E vamos subir o servidor de desenvolvimento com o comando:

npm run dev -p 4000

Depois o professor foi explicando a estrutura do NextJs. E como que funciona o React.

Montamos alguns arquivos de exemplo para entender como funciona o gerenciamento de estado do React.

Após isso começamos a ver sobre sobre a estrutura de rotas do projeto e como que funciona trabalhar com atributos dinâmicos, como ids.

Exemplo

  • localhost:4000/users/1

Seguimos a aula com a criação de um CRUD de artigos, consumindo a API que foi criada no Rails.

Foi isso para a aula de hoje

Vídeo da aula

Aula da manhã

Aula da tarde

· 2 min read

01/10/2022 - Aula 2 de Ruby (Remoto)

A segunda aula de Ruby começou com nós fazendo uma atividade no JamBoard do Google.

Imagem1

Após um tempo para fazermos, o professor foi passando um por um vendo como que cada aluno estava fazendo e as tecnologias que estavam sendo usadas. Isso foi feito para ver como que a turma está pensando e o nível de conhecimento que cada um tem.

O PDF com o que cada aluno fez pode ser encontrado aqui.

Depois disso, começamos a criar um novo projeto, para explorar como utilizar Ruby on Rails voltado para APIs.

rails new pos-unipar-rails-app --api

Após isso, começamos a criar as rotas e os controllers para cada uma delas.

rails generate scaffold Article title:string body:string

Esse comando cria o controller, o model e as rotas para o CRUD do Article.

Agora vamos gerar o Category, que será o relacionamento do Article.

rails generate scaffold Category name:string

Agora vamos criar o relacionamento entre os dois.

class Article < ApplicationRecord
belongs_to :category
end
class Category < ApplicationRecord
has_many :articles
end

E agora vamos criar um usuário

rails generate scaffold User name:string email:string password:string

Professor passou mais algumas coisas sobre relacionamentos, mas passou um outro material para fazermos em conjunto.

https://www.bluebash.co/blog/rails-6-7-api-authentication-with-jwt/

Final da aula 2

· 5 min read

17/09/2022 - Aula 1 de Ruby (Presencial)

A primeira aula de Ruby, o professor Mauricio começou a aula falando sobre o que é Ruby, e como ele é uma linguagem de programação de alto nível, interpretada, orientada a objetos, imperativa, funcional e reflexiva. Também falou que o Ruby não é a linguagem mais , mas que tem um desenvolvimento extremamente rápido.

O Ruby é uma linguagem que utiliza um terminal interativo, chamado de IRB, que é um interpretador de comandos que permite a execução de comandos Ruby de forma interativa.

Para a aula, o professor criou um arquivo no Google Drive, que é para irmos editando conforme a aula for decorrendo. O link é esse.

Tudo em Ruby é um objeto, e para saber o tipo de um objeto, podemos utilizar o método class:

"string".class
# => String

Também podemos utilizar o método is_a? para saber se um objeto é de um determinado tipo:

"string".is_a?(String)
# => true

Para listar todos os métodos de um objeto, podemos utilizar o método methods:

"string".methods
[
include?, %, *, +, unicode_normalize, to_c, unicode_normalize!,
unicode_normalized?, count, partition, unpack, encode, encode!, next,
casecmp, insert, bytesize, match, succ!, next!, upto, index, rindex,
replace, clear, chr, +@, -@, setbyte, getbyte, <=>, <<, scrub, scrub!,
byteslice, ==, ===, dump, =~, downcase, [], []=, upcase, downcase!,
capitalize, swapcase, upcase!, oct, empty?, eql?, hex, chars, split,
capitalize!, swapcase!, concat, codepoints, reverse, lines, bytes,
prepend, scan, ord, reverse!, center, sub, freeze, inspect, intern,
end_with?, gsub, chop, crypt, gsub!, start_with?, rstrip, sub!, ljust,
length, size, strip!, succ, rstrip!, chomp, strip, rjust, lstrip!,
tr!, chomp!, squeeze, lstrip, tr_s!, to_str, to_sym, chop!, each_byte,
each_char, each_codepoint, to_s, to_i, tr_s, delete, encoding,
force_encoding, sum, delete!, squeeze!, tr, to_f, valid_encoding?,
slice, slice!, rpartition, each_line, b, ascii_only?, hash, to_r, <, >,
<=, >=, between?, instance_of?, public_send, instance_variable_get,
instance_variable_set, instance_variable_defined?,
remove_instance_variable, private_methods, kind_of?,
instance_variables, tap, method, public_method, singleton_method,
is_a?, extend, define_singleton_method, to_enum, enum_for, !~,
respond_to?, display, object_id, send, nil?, class, singleton_class,
!, !=, __send__, equal?, instance_eval, instance_exec, __id__
]

No Ruby, podemos utilizar o ! para indicar que um método é perigoso, ou seja, ele pode alterar o estado do objeto. Por exemplo, o método upcase! altera o estado do objeto, enquanto o método upcase não altera o estado do objeto:

string = "string"
string.upcase
# => "STRING"
string
# => "string"
string.upcase! # Vai alterar o estado do objeto
# => "STRING"
string
# => "STRING"

Para poder acessar um valor de uma classe, podemos criar getters e setters. Por exemplo, para criar um getter, podemos utilizar o método attr_reader:

class Pessoa
attr_reader :nome
def initialize(nome)
@nome = nome
end
end

pessoa = Pessoa.new("Nome da pessoa")
pessoa.nome
# => "Nome da pessoa"

Para criar um setter, podemos utilizar o método attr_writer:

class Pessoa
attr_writer :nome
def initialize(nome)
@nome = nome
end
end

pessoa = Pessoa.new("Nome da pessoa")
pessoa.nome = "Novo nome"
pessoa.nome
# => "Novo nome"

Para criar um getter e um setter, podemos utilizar o método attr_accessor:

class Pessoa
attr_accessor :nome
def initialize(nome)
@nome = nome
end
end

pessoa = Pessoa.new("Nome da pessoa")
pessoa.nome
# => "Nome da pessoa"
pessoa.nome = "Novo nome"
pessoa.nome
# => "Novo nome"

Para criar um método, podemos utilizar a palavra reservada def:

def soma(a, b)
a + b
end

soma(1, 2)
# => 3

Criando um projeto Ruby

Podemos instalar o Ruby on Rails utilizando o RubyGems, que é um gerenciador de pacotes para a linguagem Ruby. Para instalar o Ruby on Rails, podemos utilizar o comando gem install:

gem install rails

E para instalar as dependências do projeto, podemos utilizar o comando bundle install:

bundle install

Para criar um projeto Ruby, podemos utilizar o Ruby on Rails, que é um framework web escrito em Ruby. Para criar um projeto Ruby on Rails, podemos utilizar o comando rails new:

rails new projeto

Para iniciar o servidor do projeto, podemos utilizar o comando rails server:

rails server

Para criar um controller, podemos utilizar o comando rails generate controller:

rails generate controller articles

Para criar um model, podemos utilizar o comando rails generate model:

rails generate model article title:string body:text

Para criar um scaffold, podemos utilizar o comando rails generate scaffold:

rails generate scaffold article title:string body:text

Para criar um migration, podemos utilizar o comando rails generate migration:

rails generate migration add_details_to_articles

Para executar as migrations, podemos utilizar o comando rails db:migrate:

rails db:migrate

Para criar um banco de dados, podemos utilizar o comando rails db:create:

rails db:create

Para gerarmos 1000 articles, podemos utilizar no console do Rails o comando Article.create:

rails console
1000.times do |i|
Article.create(title: "Title: #{i}", body: "Body")
end

Vimos em como fazer na mão, seguindo o tutorial do Ruby on Rails.

A aula foi bem produtiva, conseguimos avançar bem no tutorial.