-
Notifications
You must be signed in to change notification settings - Fork 9
3 Tutorial Sidekiq
Implemente o Tutorial CRUD e depois o Tutorial API Discogs ou comece esse tutorial a partir dessa branch.
Para esse tutorial vamos precisar executar os testes da pasta tutorials/sidekig-tutorial
somente com: rspec spec/tutorials/sidekiq_tutorial/*
.
no arquivo Gemfile
adicione a seguinte linha à lista de gems gerais:
gem 'sidekiq'
execute bundle install
no arquivo config/routes.rb
crie rotas para a interface do sidekiq da seguinte forma:
require 'sidekiq/web'
Sidekiq::Web.app_url = '/'
Rails.application.routes.draw do
mount Sidekiq::Web => '/sidekiq'
root 'home#show'
...
end
com o redis executando em segundo plano execute o sidekiq com bundle exec sidekiq
com o servidor rodando e um usuário conectado deve ser possível acessar a interface em localhost:3000/sidekiq
crie a seguinte pasta: app/workers
e nela insira um arquivo chamado import_artist_worker.rb
nesse arquivo adicione o seguinte conteúdo:
class ImportArtistWorker
include Sidekiq::Worker
def perform(artist_name, user_id)
client = DiscogsRequestsService::Client.new
artist = client.get_artist(artist_name)
Artist.new(name: artist.name, profile: artist.profile, user_id: user_id).save
end
end
agora pelo console deve ser possível chamar o worker com:
ImportArtistWorker.new.perform('Raul Seixas', User.first.id)
a execução do teste spec/tutorials/sidekiq_tutorial/workers/import_artist_worker_spec.rb
deve passar
no arquivo app/controllers/imports_controller.rb
modifique a ação artist
da seguinte forma:
def artist
if import_artist_params[:name].blank?
redirect_to artists_path, notice: 'Please inform an artist'
return
end
ImportArtistWorker.perform_async(import_artist_params[:name], current_user.id)
redirect_to artists_path, notice: 'Your artist will be imported shortly.'
end
agora a execução do teste spec/tutorials/sidekiq_tutorial/controllers/imports_controller_spec.rb
deve passar
além disso, importar um artist agora deve ocorrer de maneira assíncrona.