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

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

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

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

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

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

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

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

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

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

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

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

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

Разработка

  • 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 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

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

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

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

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

По регионам

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

По формату

  • Удалённые вакансии73 889
  • Релокация в США43 686
  • Гибридная работа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 RailsMiddleТеория

Что такое Rails engines и как они помогают модуляризировать большие приложения?

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

Rails Engine — самодостаточный плагин со своими моделями, контроллерами, маршрутами и миграциями, монтируемый в родительское приложение. Isolated Engine полностью изолирует namespace через isolate_namespace, full engine разделяет пространство с хостом.

Создание Engine

# Создание нового Engine
rails plugin new billing --mountable
# --mountable = isolated engine с namespace
# --full = full engine без изоляции
# billing/lib/billing/engine.rb
module Billing
  class Engine < ::Rails::Engine
    isolate_namespace Billing

    config.generators do |g|
      g.test_framework :rspec
      g.fixture_replacement :factory_bot
    end

    initializer 'billing.configure_stripe' do
      Stripe.api_key = Rails.application.credentials.stripe[:api_key]
    end
  end
end

Rails Engines: самодостаточные мини-приложения

Rails Engine — это Gem, который содержит полноценное Rails-приложение: модели, контроллеры, вьюхи, маршруты, миграции, ассеты и даже initializers. Engine монтируется в родительское приложение и работает как изолированный модуль. Сам Rails — это тоже Engine (Rails::Application < Rails::Engine).

Типы Engines

  • Full Engine — разделяет пространство имён с родительским приложением. Модели, контроллеры и хелперы доступны без префикса.
  • Isolated Engine — полная изоляция через isolate_namespace. Свои маршруты, хелперы, ассеты не конфликтуют с хостом.

Маршруты Engine

# billing/config/routes.rb
Billing::Engine.routes.draw do
  resources :invoices
  resources :subscriptions, only: [:index, :show, :create, :destroy]
  get  '/checkout', to: 'checkouts#new'
  post '/checkout', to: 'checkouts#create'
end
# Монтирование в родительское приложение
# config/routes.rb (host app)
Rails.application.routes.draw do
  mount Billing::Engine, at: '/billing'
  mount AdminPanel::Engine, at: '/admin'
end

Модели и миграции

# billing/app/models/billing/invoice.rb
module Billing
  class Invoice < ApplicationRecord
    self.table_name = 'billing_invoices'

    belongs_to :user  # ссылка на хост-модель
    has_many :line_items, class_name: 'Billing::LineItem'

    enum status: { draft: 0, sent: 1, paid: 2, overdue: 3 }

    monetize :amount_cents
  end
end
# Копирование миграций из engine в хост-приложение
bundle exec rake billing:install:migrations
bundle exec rails db:migrate

Подключение Engine в host app

# Gemfile хост-приложения
gem 'billing', path: 'engines/billing'       # monorepo
# или
gem 'billing', git: 'https://github.com/company/billing-engine'

Использование хост-моделей из Engine

# billing/lib/billing.rb
module Billing
  mattr_accessor :user_class
  self.user_class = 'User'  # дефолт

  def self.user_model
    user_class.constantize
  end
end

# В initializer хост-приложения
# config/initializers/billing.rb
Billing.user_class = 'Account'

Реальные примеры Engines в экосистеме Rails

  • Devise — engine для аутентификации (маршруты, контроллеры, вьюхи)
  • Spree — e-commerce engine
  • Administrate — admin-панель как engine
  • Sidekiq Web — Rack app, монтируется аналогично engine

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

  • Миграции нужно копировать вручную: rails billing:install:migrations — этот шаг легко забыть при обновлении engine, и БД окажется устаревшей.
  • Конфликты имён таблиц: без явного self.table_name = 'billing_invoices' модель Billing::Invoice будет искать таблицу invoices, конфликтуя с хост-моделью.
  • Circular dependency между engine и хостом: engine не должен напрямую ссылаться на классы хоста (User, Account) — используйте конфигурируемые строки и constantize.
  • Хелперы и asset pipeline: при isolate_namespace хелперы engine доступны только через billing-префикс (billing.invoices_path), что неочевидно при отладке.
  • Тестирование engine требует dummy app: в spec/dummy или test/dummy должно быть тестовое Rails-приложение, что усложняет CI-пайплайн.
  • Версионирование и обратная совместимость: при использовании engine как gem нужно соблюдать SemVer — изменение схемы БД в engine без миграции ломает все хост-приложения.
  • Производительность autoload: каждый engine добавляет свои пути в Rails autoload, что может замедлять старт приложения при большом количестве engines.

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

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

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

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

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

  • Объясняет engines через конкретную точку lifecycle в Ruby on Rails.
  • Приводит корректный минимальный пример без вымышленных методов или callbacks.
  • Называет edge cases: пустые значения, ошибки, транзакции, безопасность или concurrency.

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

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

Источники

  • https://guides.rubyonrails.org/engines.html
  • https://guides.rubyonrails.org/
←Предыдущий вопросЧто такое Rails concerns и как они помогают организовывать код?Следующий вопрос→Как Rails управляет конфигурацией для конкретных окружений?

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

Ruby on RailsBackend-Engineeringruby-on-rails-ecosystem