Комментарии 11
> Процесс Руби (и Рейлс) запускается только тогда, когда сервер начинает обрабатывать запрос. Поэтому, если, к примеру, необходимо выполнять какое-то действие каждый час, в среде Рейлс придётся использовать 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. феникс/эликсир понемногу пробую, пока еще не распробовал, но кажется довольно интересным.
Автор давно не писал 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. феникс/эликсир понемногу пробую, пока еще не распробовал, но кажется довольно интересным.
Спасибо за комментарий. Попробую ответить.
В статье я не вижу противоречий. Для периодического запуска задач на Руби, в любом случае, понадобится некая «cron-like» библиотека, это не обязательно сам Юниксовский `cron`. Вы далее в своём комментарии правильно уточняете, что эту задачу можно решить и через «отложенные задачи» и «планировщики к ним».
Теперь по поводу старта процесса. Возьмём для примера сервер приложения `Unicorn`. Он создаёт постоянно висящий мастер-процесс и на каждый запрос действительно форкает дочерние. Конечно же само приложение не перезапускается для каждого клиента :) В целом в этой фразе нет противоречия.
В статье я не вижу противоречий. Для периодического запуска задач на Руби, в любом случае, понадобится некая «cron-like» библиотека, это не обязательно сам Юниксовский `cron`. Вы далее в своём комментарии правильно уточняете, что эту задачу можно решить и через «отложенные задачи» и «планировщики к ним».
Теперь по поводу старта процесса. Возьмём для примера сервер приложения `Unicorn`. Он создаёт постоянно висящий мастер-процесс и на каждый запрос действительно форкает дочерние. Конечно же само приложение не перезапускается для каждого клиента :) В целом в этой фразе нет противоречия.
Спасибо что не «Раби»
Не переводите на русский названия, пожалуйста. Ещё и в половине мест Руби, в другой Ruby.
Что плохого в словах Ruby, Elixir, Rails, Phoenix?
Не переводите на русский названия, пожалуйста. Ещё и в половине мест Руби, в другой Ruby.
Что плохого в словах Ruby, Elixir, Rails, Phoenix?
Потому что это русский язык, а на русском мы говорим «Руби», «рубист», «хочу писать на Эликсире». А по поводу того, что в половине мест написано на английском: проверил и оказалось, что ОДИН раз в статье действительно написано «Ruby», поправил. Но зачем же так передёргивать?
А ещё на русском мы говорим «работает в Бейзкампе» и «Круд-приложения». Не говоря про «Экто» и «Эктиврекорд».
Иностранные имена собственные не переводятся. Статья сильно теряет читабельность.
Это не критично разумеется, но неудобно, думаю не только мне
Иностранные имена собственные не переводятся. Статья сильно теряет читабельность.
Это не критично разумеется, но неудобно, думаю не только мне
Спасибо, я понял вашу позицию. Если станет понятно, что большинству так читать неудобно, то будем оставлять названия на оригинале. Пока же мы имеем противоположное мнение.
CRUD
– аббревиатура, не переводим. Ecto
, ActiveRecord
– технически специфические термины, названия библиотек, не переводим. Такие названия специально выделяем тегом < code >< /code >
. И хоть дизайн Хабра не выделяет их в рамочку, как это принято, но хотя бы применяет моноширинный шрифт.
иностранные имена переводятся без каких-либо проблем. Вам может показаться, что это так, если вы познакомились с руби вчера. Лично я знаком с руби и рельсами уже больше 11 лет и мне немного смешно слышать, что я обязан писать их по-английски.
Где найти хорошие доки по Фениксу?
На русском пока нигде. Как только закончим перевод документации по самому Эликсиру, постараемся взяться за Феникс.
Вообще в качестве вводного курса можно пройти серии статей «Делаем блог на Фениксе» и «Клон Трелло на Фениксе и Реакте», а затем уже искать ответы на вопросы в официальной документации.
Вообще в качестве вводного курса можно пройти серии статей «Делаем блог на Фениксе» и «Клон Трелло на Фениксе и Реакте», а затем уже искать ответы на вопросы в официальной документации.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Когда Феникс успел убить Рейлс?