Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 487новых вакансий за сутки·92 551вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 220
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 105
  • Облачные технологии14 073
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 805
  • Продакт-менеджер1 266

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 763
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 261
  • CI/CD3 240
  • Мониторинг и Observability1 783
  • SRE566
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 140
  • Бизнес-аналитик930
  • Аналитик данных853
  • Системный аналитик154

Другие направления

  • Проджект-менеджер615
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США43 685
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 887
  • Релокация в США43 685
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Ruby on RailsВсе вопросы
Ruby on RailsSeniorПроектирование систем

Что такое Active Job и как он интегрируется с Sidekiq или Resque?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Active Job — абстрактный слой очередей в Rails с унифицированным API для любого бэкенда (Sidekiq, Resque, Delayed Job). Sidekiq подключается через адаптер и исполняет джобы в отдельных воркер-процессах.

Базовый пример

# app/jobs/send_welcome_email_job.rb
class SendWelcomeEmailJob < ApplicationJob
  queue_as :default
  retry_on Net::OpenTimeout, wait: :polynomially_longer, attempts: 5
  discard_on ActiveRecord::RecordNotFound

  def perform(user_id)
    user = User.find(user_id)
    UserMailer.welcome(user).deliver_now
  end
end

# Постановка в очередь
SendWelcomeEmailJob.perform_later(user.id)
SendWelcomeEmailJob.set(wait: 10.minutes).perform_later(user.id)
SendWelcomeEmailJob.set(queue: :critical).perform_later(user.id)

Что такое Active Job

Active Job — это фреймворк-обёртка, стандартизирующий интерфейс фоновых задач в Rails. Вместо прямого вызова Sidekiq API вы пишете один класс Job, а бэкенд (очередь) подключается через адаптер. Это позволяет менять Sidekiq на Resque или наоборот без изменения бизнес-логики.

Интеграция с Sidekiq

# Gemfile
gem "sidekiq"

# config/application.rb
config.active_job.queue_adapter = :sidekiq
# config/sidekiq.yml
:concurrency: 10
:queues:
  - [critical, 3]
  - [default, 2]
  - [low, 1]
bundle exec sidekiq -C config/sidekiq.yml

Sidekiq Web UI

# config/routes.rb
require "sidekiq/web"

authenticate :user, ->(u) { u.admin? } do
  mount Sidekiq::Web => "/sidekiq"
end

Прямой вызов Sidekiq API (минуя Active Job)

Если нужны специфические функции Sidekiq (батчи, throttling из Sidekiq Pro), можно унаследоваться от Sidekiq::Job напрямую:

class HeavyReportWorker
  include Sidekiq::Job
  sidekiq_options queue: "reports", retry: 3

  def perform(report_id)
    Report.find(report_id).generate!
  end
end

HeavyReportWorker.perform_async(report.id)
HeavyReportWorker.perform_in(1.hour, report.id)

Интеграция с Resque

# config/application.rb
config.active_job.queue_adapter = :resque

# Gemfile
gem "resque"

Callbacks и instrumentation

class ApplicationJob < ActiveJob::Base
  around_perform do |job, block|
    Rails.logger.tagged(job.class.name) { block.call }
  end

  after_discard do |job, exception|
    ErrorTracker.notify(exception, job: job.class.name, args: job.arguments)
  end
end

Подводные камни

  • Active Job сериализует аргументы в JSON через GlobalID — передавайте user.id или сам объект (если он GlobalID::Identification), но не сложные Ruby-объекты без GlobalID.
  • При передаче AR-объекта напрямую он будет десериализован через find — если запись удалена к моменту выполнения, без discard_on ActiveRecord::RecordNotFound джоб будет ретраиться бесконечно.
  • Очередь :default в конфиге Sidekiq должна быть явно указана — иначе джобы молча уходят в неотслеживаемое место.
  • Параметр wait: в retry_on со значением :polynomially_longer может откладывать джоб на часы при большом числе попыток — следите за дедлайном.
  • Sidekiq по умолчанию использует :default как строку, а Active Job — как символ: в конфиге sidekiq.yml всегда пишите имена очередей строками.
  • В тестах ActiveJob::TestHelper требует queue_adapter = :test — в Rails 7+ это устанавливается автоматически, но в более старых версиях нужно явно.
  • Sidekiq не гарантирует ровно одно исполнение (at-least-once) — делайте джобы идемпотентными через уникальные индексы или Sidekiq::UniqueJobs.

Частые вопросы на собеседовании

  • Как Rails обрабатывает защиту от CSRF?
  • Что такое паттерн MVC и как Rails его реализует?
  • Что такое migrations в Rails и как их создавать и запускать?
  • В каких backend-проектах Ruby on Rails является сильным выбором, а где лучше выбрать более простой или другой стек?

Типичные ошибки

  • Сводить active job sidekiq resque к названию метода без lifecycle и failure path.
  • Игнорировать модель runtime: Rails 8.1 строит приложение вокруг Rack, routing, controllers, Active Record, views и conventions over configuration.
  • Не отделять validation, authorization, transaction boundary и business logic.
  • Не обсуждать idempotency, retries, shutdown и observability.

Что проверяет интервьюер

  • Объясняет active job sidekiq resque через конкретную точку lifecycle в Ruby on Rails.
  • Приводит корректный минимальный пример без вымышленных методов или callbacks.
  • Называет edge cases: пустые значения, ошибки, транзакции, безопасность или concurrency.
  • Связывает решение с метриками, backpressure, retry policy и graceful shutdown.

Как вы знаете этот вопрос?

Проверить себя по теме Ruby on Rails →

Источники

  • https://guides.rubyonrails.org/active_job_basics.html
  • https://guides.rubyonrails.org/

Связанные темы

Ruby on RailsBackend-Engineeringconcurrencyproduction-readinessreliabilityruby-on-rails-ecosystemsystem-design

Вакансии с этим навыком

  • Automation QA Engineer (Payments)