Website development
Ruby
Programming
Ruby on Rails
Elixir/Phoenix
Comments 11
0
> Процесс Руби (и Рейлс) запускается только тогда, когда сервер начинает обрабатывать запрос. Поэтому, если, к примеру, необходимо выполнять какое-то действие каждый час, в среде Рейлс придётся использовать CronJob.

Автор давно не писал rails app видимо. Или не так выразился.
> A Ruby (on Rails) process only runs when the web server starts it to answer a request.

В настоящее время, на практике, процесс рейлс стартует единожды, до следующего перезапуска (скажем, в результате редеплоя). По крайней мере в passenger. Не говоря уж о встроенных серверах типа thin, puma итп. Я так и представил себе, как пользователь ждет каждый раз от 3 сек. до нескольких минут…
Другое дело, что действительно, rails представляет возможность лишь обработать запрос. Из коробки, нельзя просто так взять и запустить фоновую задачку в рамках того же процесса (потоки? Здесь это не лучшая идея).

Помимо cron jobs, используются исполнители фоновых задач, такие как delayed_job и sidekiq. Грубо говоря, это еще один rails процесс, который не выполняет веб-запросы, а периодически поллит хранилище задач. Задачи создаются в основных процессах. Существуют планировщики поверх этих исполнителей, например — github.com/moove-it/sidekiq-scheduler

P.S. феникс/эликсир понемногу пробую, пока еще не распробовал, но кажется довольно интересным.
+2
Спасибо за комментарий. Попробую ответить.

В статье я не вижу противоречий. Для периодического запуска задач на Руби, в любом случае, понадобится некая «cron-like» библиотека, это не обязательно сам Юниксовский `cron`. Вы далее в своём комментарии правильно уточняете, что эту задачу можно решить и через «отложенные задачи» и «планировщики к ним».

Теперь по поводу старта процесса. Возьмём для примера сервер приложения `Unicorn`. Он создаёт постоянно висящий мастер-процесс и на каждый запрос действительно форкает дочерние. Конечно же само приложение не перезапускается для каждого клиента :) В целом в этой фразе нет противоречия.
+1
Спасибо за уточнения. Просто по тексту может сложиться впечатление, что процесс запускается каждый раз, с нуля.
0
Спасибо что не «Раби»
Не переводите на русский названия, пожалуйста. Ещё и в половине мест Руби, в другой Ruby.
Что плохого в словах Ruby, Elixir, Rails, Phoenix?
0
Потому что это русский язык, а на русском мы говорим «Руби», «рубист», «хочу писать на Эликсире». А по поводу того, что в половине мест написано на английском: проверил и оказалось, что ОДИН раз в статье действительно написано «Ruby», поправил. Но зачем же так передёргивать?
+2
А ещё на русском мы говорим «работает в Бейзкампе» и «Круд-приложения». Не говоря про «Экто» и «Эктиврекорд».
Иностранные имена собственные не переводятся. Статья сильно теряет читабельность.
Это не критично разумеется, но неудобно, думаю не только мне
+1

Спасибо, я понял вашу позицию. Если станет понятно, что большинству так читать неудобно, то будем оставлять названия на оригинале. Пока же мы имеем противоположное мнение.


CRUD – аббревиатура, не переводим. Ecto, ActiveRecord – технически специфические термины, названия библиотек, не переводим. Такие названия специально выделяем тегом < code >< /code >. И хоть дизайн Хабра не выделяет их в рамочку, как это принято, но хотя бы применяет моноширинный шрифт.

0
иностранные имена переводятся без каких-либо проблем. Вам может показаться, что это так, если вы познакомились с руби вчера. Лично я знаком с руби и рельсами уже больше 11 лет и мне немного смешно слышать, что я обязан писать их по-английски.
+1
На русском пока нигде. Как только закончим перевод документации по самому Эликсиру, постараемся взяться за Феникс.

Вообще в качестве вводного курса можно пройти серии статей «Делаем блог на Фениксе» и «Клон Трелло на Фениксе и Реакте», а затем уже искать ответы на вопросы в официальной документации.
Only those users with full accounts are able to leave comments.  , please.