[Rails] Über ActiveJob!

Was ist ActiveJob?

Ein Framework zum Deklarieren von Jobs und damit zum Ausführen verschiedener Warteschlangenoperationen im Backend. Mit Active Job ist es möglich, E-Mails zu senden und die Stapelverarbeitung im Hintergrund auszuführen.

Aktiver Jobhintergrund

Warteschlange

First-In-First-Out-Datenstruktur. Die Rückseite des Stapels.

Job

Zu den Jobs gehören regelmäßige Bereinigungen, Rechnungsstellung und E-Mail-Zustellung. Es ist auch möglich, diese Jobs in kleinere Arbeitseinheiten aufzuteilen und parallel auszuführen.

Zweck des aktiven Jobs

Resque

Delayed Job --DM muss eine dedizierte Tabelle erstellen.

Sidekiq --Resque kompatible API.

ActiveJob-Installationsverfahren

  1. Führen Sie zum Installieren den folgenden Befehl aus.

$ brew install redis
  1. Fügen Sie der Gemfile Folgendes hinzu.

gem 'resque'
gem 'resque-scheduler'

Führen Sie dies auch aus.


$ bundle install
  1. Fügen Sie die Initialisierungsdatei und die Rechenaufgabe hinzu.

config/initializers/resque.rb



Resque.redis = Redis.new(host: 'localhost', post: 6379)
Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection }
  1. Erstellen Sie eine Anforderungseinstellungsdatei mit den folgenden Inhalten.

lib/tasks/resque.rake



require 'resque/tasks'
require 'resque/scheduler/tasks'

namespace :resque do
  task setup: :environment do
    ENV['TERM_CHILD'] ||= '1'
    ENV['QUEUE'] ||= '*'
    require 'resque'
    require 'resque-scheduler'
  end
end
  1. Erstellen Sie die folgende Initialisierungsdatei und geben Sie Resque als queue_adapter an.

config/initializers/active_job.rb



ActiveJob::Base.queue_adapter = :resque

Beispiel für die tatsächliche Verwendung

  1. Erstellen Sie einen UserMailer mit dem folgenden Befehl.

$ rails g mailer user_mailer
  1. Fügen Sie Methoden und Ansichten zur Übermittlung hinzu.

app/mailers/user_mailer.rb



class UserMailer < ActionMailer::Base
  default from: "[email protected]"

  def registered(user)
    mail(to: user.email, subject: 'Welcome to Rdaily!')
  end
end

app/views/user_mailer/registered.text.erb



Dear. <%= @user.name %>

Welcome to Rdaily!
  1. Erstellen Sie einen Job mit dem folgenden Befehl

$ rails g job user_registered_mailer
  1. Bearbeiten Sie die erstellte Datei wie folgt.

app/jobs/user_registered_mailer_job.rb



class UserRegisteredMailerJob < ActiveJob::Base
  queue_as :email

  def perform(user)
    UserMailer.registered(user).deliver_now
  end
end
  1. Um den erstellten Job zu verwenden, erstellen Sie eine Instanz des Jobs auf dem Controller wie unten gezeigt, geben Sie die Wartezeit an und rufen Sie die Methode #perform_later auf.

class Account::UsersController < ApplicationController
  ...

  def create
    @user = User.new(user_params)
    if @user.save
      UserRegisteredMailerJob.perform_later(@user)
      flash.notice = "User is successfully created."
      redirect_to account_path
  ...
end
  1. Fügen Sie der Gemfile Folgendes hinzu.

gem 'mailcatcher'

Führen Sie dies auch aus.


$ bundle install
  1. Schreiben Sie Folgendes in die Umgebungseinstellungsdatei.

config/environments/development.rb



Rails.application.configure do
  ...
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = { address: 'localhost', port: 1025 }
  ...
end
  1. Starten Sie den Mailcatcher mit dem folgenden Befehl.

$ mailcatcher
  1. Starten Sie verschiedene Server.

#Starten Sie den Redis-Server mit dem folgenden Befehl
$ redis-server

#Starten Sie Resque Worker mit dem folgenden Befehl
$ bundle exec rake resque:work

#Starten Sie den Resque Scheduler
$ rake environment resque:scheduler

#Starten Sie den Rails-Server
$ rails server

Referenz

Verwenden wir den in Rails 4.2 eingeführten aktiven Job

[Rails, Linux] Ich habe "Active Job" und "Job" zusammengefasst

Recommended Posts

[Rails] Über ActiveJob!
Über Schienen 6
Informationen zum Rails-Routing
Über Rails Controller
[Rails] Informationen zu Migrationsdateien
[Rails] Über aktiven Hash
Informationen zur Versionsspezifikation für Schienen
[Schienen] Standardwerte festlegen
Schienen Starke Parameter
[Anfänger] Über Rails Session
Informationen zum Benennen von Rails-Modellmethoden
[Rails] Informationen zur Struktur des scss-Ordners
Über =
[Rails] Informationen zum Rspec-Antworttest
Über Rails Scraping-Methode Mechanisieren
Über das Symbol <%%> in Rails erb
[Rails] Über die Implementierung der Like-Funktion
[Rails] Über die Hilfsmethode form_with [Basic]
Überlegungen zu Schienen und sauberer Architektur
[Schienen g. Fehler]
Über Kotlin
Über attr_accessor
Rails Grundlagen
Rails Review 1
Über Hinemos
[Rails] first_or_initialize
Schienen Tutry
Über den Frühling ③
Über Aufzählung
[Rails 6.0] Informationen zum Batch-Speichern mehrerer Datensätze
Schienenfundament
Über Optional
Über Hash
Über JitPack
Schienen Tutorial
Schienen Tutry
Deshalb habe ich dieses Mal die Methode "Verknüpfen des Inhalts des Verzeichnisses" übernommen. Ich denke, es wird je nach Zeit und Fall richtig verwendet. Tutorial zu Linux, ln, Linux-Befehlsschienen
Darüber ()
Über die Kapselung
Über JAVA_HOME
[Ruby on Rails] Informationen zum Active Record-Rückruf
Über Ausnahmen
[Schienen] erfinden
Schienen Tutry
Schienen Tutorial