cassiosantana / ruby_study

0 stars 0 forks source link

34 - Ruby on Rails - Rake #13

Closed cassiosantana closed 1 year ago

cassiosantana commented 1 year ago

Aula 34

A rake serve para quando temos uma alteração, migração que temos que fazer diretamente no banco de dados.

Esta aula irá nos ensinar a criar uma rake.

Mostrar todas as rakes do sistema:

bundle exec rake -T

Na lista que o comando acima retorna, veremos, por exemplo o 'rake db:seed' que serve para que possamos popular nosso banco de dados adicionando objetos no arrivo db/seeds.rb:

Produto2.new(nome: 'Cadeira Gamer', descricao: 'Cadeira muito conformável e linda').save

Para rodar o seed:

bundle exec rake db:seed

Verificar o registro:

rails c
Produto2.last

Como criar uma rake: Digamos que queremos apagar dados do banco. Podemos apagar pelo console do rails mas se for uma atividade recorrente se torna muito trabalhoso utilizar o console. Uma rake pode ser criada para deixar esta tarefa automatizada:

rails g task apagar_dados tabela_produto2 tabela_produto1

Neste caso o nome da rake será 'apagar_dados' e os subnomes 'tabela_produto2' e 'tabela_produto1" que serão gerados na pasta lib/tasks.

Lá no arquivo criado podemos adicionar o código que desejamos. Exemplo:

namespace :apagar_dados do
  desc "Apagar produto com id = 9"
  task tabela_produto2: :environment do
    Produto2.find(9).destroy
    puts '############# Apagado produto de id 9 #############'
  end

  desc "Apagar o ultimo produto da tabela"
  task tabela_produto1: :environment do
    Produto2.last.destroy
    puts '############# Apagado ultimo produto adicionado #############'
  end

end

Verificando nosso rake criado: Lembranco que este comando deve ser executado dentro do nosso projeto.

bundle exec rake -T

Buscando por parte do nome:

bundle exec rake -T | grep apagar

Rodando nossa rake:

bundle exec rake apagar_dados:tabela_produto1
bundle exec rake rake apagar_dados:tabela_produto2

Desta forma estes comando ficam eternizados na nossa aplicação para facilitar nosso trabalho.

Caso queiramos que estes comandos sejam executados em nosso ambiente de produção:

bundle exec rake rake apagar_dados:tabela_produto2 -e production

Exemplo de como rodar uma rake diretamente no heroku:

heroku login
heroky run rake minha:rake

Utilizando uma rake personalidada que utiliza uma api dos correios para buscar um cep: https://youtu.be/6vElgNZBHaI?t=1614