• Как умело работать с Sidekiq и очередями?

    @bmalets
    Коротко про суть - в общем любой сайт должен возвращать страничку на клиент < 3 секунд. То есть рельсы должны быстро обработать запрос и вернуть ответ. Отправка почты или "работа с инстаграм" - довольно сложные для обработки задания, которые замедлят скорость HTTP-ответа. Если "тяжелую" часть работы отдать на sidekiq, то то этой проблемы не возникнет.

    Sidekiq использует Redis для хранения очередей.
    В папке /app/workers/ размещаешь нужные для тебя воркеры. Например:

    # app/workers/hard_worker.rb
    class HardWorker
      include Sidekiq::Worker
    
      def perform(name, count)
        puts 'Doing hard work'
      end
    end

    (метод перформ как точка входа нужен обезательно, название файла и класса должны заканчиваться на 'worker', ну и конечно же include Sidekiq::Worker тоже нужно).

    Когда sidekiq запущен, можешь из любой точки в коде проекта вызывать:

    HardWorker.perform_async('bob', 5)

    Что создаст новое "задание" для sidekiq и добавит его в очередь. Собственно, по мере обработки job-ов sidekiq выполнит поставленое ему задание - достанет его из очереди и воркер его выполнит. Больше воркеров - быстрее обработка, количество воркеров можна задать как аргумент при запуске sidekiq.

    P.S. Скорее всего ты сделал ошибку в воркере или неправильно делаешь вызов. Добавь свой код к вопросу.
    + посмотри рейлскаты на эту тему railscasts.com/episodes/366-sidekiq
    Ответ написан
    5 комментариев
  • Как собрать все миграции в одну?

    @vsuhachev
    В рельсах есть файл db/schema.rb который:
    1) обновляется после применения каждой миграции
    2) рекомендуется хранить под версионным контролем
    3) используется для создания схемы БД без миграций, см. рэйк-таск db:schema:load
    Ответ написан
    Комментировать
  • Как организовать скачивание файла с сервера (paperclip)?

    @IvanN777
    If the file uploaded is attached to a model, e.g. as an attribute called avatar, then you can create a link like:

    <%= link_to "Download", model.avatar.url(:original, false) %>
    Replace avatar with the name of your attribute.
    Ответ написан
    Комментировать
  • Как вывести сообщении ошибок при валидации в Rails?

    YourWest
    @YourWest
    Ruby Developer
    Пример вывода ошибок:
    <% if @article.errors.any? %>
      <div id="error_explanation">
        <h2><%= pluralize(@article.errors.count, "error") %> prohibited this article from being saved:</h2>
        <ul>
        <% @article.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
        </ul>
      </div>
    <% end %>


    Про изменение сообщений об ошибка почитайте тут: rusrails.ru/rails-internationalization-i18n-api
    Ответ написан
    Комментировать
  • Rails form_for как заставить форму генерировать путь без модуля?

    viktorvsk
    @viktorvsk
    Если вариации с
    = form_for [:core, @ contractor] do |f|
    не помогут
    То я бы делал так:
    url: (@ contractor.persisted? ? contractor_path(@ contractor) : contractors_path, method: (@ contractor.persisted? ? :put : :post)
    Ответ написан
    6 комментариев
  • Как изучая технологию не стать ее заложником?

    viktorvsk
    @viktorvsk
    Учиться методом проб и ошибок - как делает человечество и наука уже тысячи лет, несмотря на любые достижения и периодические исключения - тоже ужасный способ развития. Однако, к сожалению, лучше еще не придумали.

    Начнем с того, что рельсы появились в 2004 году, когда все было по-другому. И довольно успешно развиваются и подстраиваются под современные требования, что бы там ни говорили.

    Ну, и собственно, фреймворки (рельсы, в частности) - это не вордпресс, поэтому навыки которые вы получите при работе с ним (фреймворком) будут более обширные. И даже если технология умерт (заметим, что руби появился в 1995, как и джава, а рельсы поддерживаются, например, гитхабом), то значния полученные в процессе (необходимые при работе с фреймворком) - запросто перейдут в другие технологии. На примере рельс, во многих случаях перейдут как бест-практисес.

    Короче, самый нормальный путь обучения - на реальных задачах. Сегодня, по крайней мере, все реальные серьезные задачи (не берем редкие исключения типа ФБ и ВК, где тоже можно было бы не городить, кстати) делаются на фреймворках. Вывод: шашечки или ехать?
    Ответ написан
    Комментировать
  • * Restarting nginx nginx [fail]. Где смотреть логи?

    alexclear
    @alexclear
    A cat
    Сделайте для начала nginx -t - это тест конфига, он покажет ошибки
    А логи смотрите в /var/log/nginx/error.log, обычно они там
    Ответ написан
    Комментировать
  • Как в Sublime Text 3 сделать отступы в виде двух пробелов по дефолту?

    Zoxon
    @Zoxon
    Веб-разработчик
    Preferences → Settings User

    {
    // The number of spaces a tab is considered equal to
    "tab_size": 2,
    
    // Set to true to insert spaces when tab is pressed
    "translate_tabs_to_spaces": true
    }
    Ответ написан
    3 комментария
  • Почему не работает jQuery в веб приложении на Rails?

    @iamnothing
    В последней версии гема jquery-ui-rails поменяли схему именования файлов. Пример:
    //= require jquery-ui/datepicker
    ссылка на Github, там можно почитать про это
    Ответ написан
    6 комментариев
  • Почему изменилось отношение к персональным данным?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Отношение изменилось от того, что большинство юристов, в отличие от большинства ИТ-шников, изучают философию и знакомы с законами диалектики, один из которых (почерпнутый Энгельсом у Гегеля) гласит, что количество неизбежно превращается в качество :)

    В полном соответствии с данным законом они, по мере увеличения количества доступных персональных данных, сформировали вторичный рынок, т.е. принялись активно защищать нашу приватную сферу от нас же самих, (убедив нас в баснословной ценности наших персональных данных и исключительной важности их защиты), за что и взимать скромную плату. Если так пойдет дальше, следует ожидать исчезновения из публичного доступа табличек с названиями улиц и номерами домов и административной ответственности за подпись документов своим именем и сдачу анализов мочи в поликлиниках.

    Остается только уповать на другой закон, из области саморегулирующихся систем: когда мы (как общество) вернемся на уровень диких племен, полагающих имя особи священной тайной, количество юристов может подсократиться и система может перейти в режим "призовая игра".
    Ответ написан
    Комментировать
  • Перевод интерфейса Photoshop CC

    tank666
    @tank666
    Дизайнер, Figma-эксперт, автор плагинов для Figma.
    Запустить Photoshop, нажать Ctrl+K и изменить язык.
    Ответ написан
    1 комментарий
  • Что значит "DL is deprecated, please use Fiddle"?

    Комментировать
  • Игра для программистов. Есть ли аналог?

    Bandicoot
    @Bandicoot
    Вась-программист
    по Питону: checkio.org
    по Руби: Ruby Warrior

    Убить время пойдет. Но если хочешь научиться программировать, то лучше делать только реальные проекты
    Ответ написан
    Комментировать
  • Доменная зона .io — что я пропустил?

    Один из омонимичных доменов:

    .am — национальный домен Республики Армения, созвучен с диапазоном радиостанций AM или как зона AMerica.
    .cd — национальный домен Демократической республики Конго (иначе — Заира), совпадает с сокращением для компакт-диска.
    .dj — национальный домен Джибути, совпадает с сокращением «диджей».
    .fm — национальный домен Федеративных Штатов Микронезии, созвучен с диапазоном радиостанций FM. Пример: last.fm.
    .im — национальный домен Острова Мэн. Совпадает с сокращением Instant Messaging («мгновенные сообщения»).
    .io — национальный домен Британских территорий в Индийском океане. Совпадает с сокращением Input Output («ввод/вывод»).
    .is — национальный домен Исландии. Совпадает со словом is, формой третьего лица единственного числа английского глагола to be. Пример: who.is
    .it — национальный домен Италии. Совпадает с сокращением IT (информационные технологии), а также с английским местоимением it («это»). Пример: ok.undo.it
    .md — национальный домен Молдавии. Совпадает с сокращением аудионосителя MiniDisc и с сокращением Must Die. Также совпадает с сокращением от англ. medical doctor, используемым повсеместно в англоязычных странах. Например, известный американский сериал «Доктор Хаус» в оригинале называется House, MD.
    .me — национальный домен Черногории. Совпадает с местоимением «меня», «мне» в английском и других европейских языках.
    .net — общий домен верхнего уровня, совпадает с русским словом «нет», из-за чего обрёл в России (и не только) дополнительную популярность. Часто используется с доменными именами в виде транслитерированных русских слов. Примеры: mozga.net, lishnih.net.
    .nu — национальный домен острова Ниуэ, созвучно со словом ню.
    .tm — национальный домен Туркменистана, совпадает с аббревиатурой «™» (англ. trade mark — торговая марка).
    .tv — национальный домен Тувалу, совпадает с аббревиатурой «Телевидение».
    .ws — национальный домен Западного Самоа, совпадает с аббревиатурой Web Site.
    .in — национальный домен Индии, с английского языка переводится как предлог «в».
    .li — национальный домен Лихтенштейна. Совпадает с окончанием глаголов и имён существительных в русском языке. Используется с доменными именами в виде транслитерированных русских слов. Примеры: zadolba.li, zastuka.li, vaf.li, gus.li, yas.li.
    .pro - общий домен верхнего уровня для профессионалов в своей области.
    Ответ написан
    3 комментария
  • Rails g scaffold person создает контроллер people. Почему?

    Scat
    @Scat
    Это связанно с генерацией имен и Rails соглашении об именах. Модель он создает с именем в единичном, числе, а вот таблицу во множественном. Т.к. некоторые слова в английском языке во множественном числе звучат по-другому, у Rails есть на этот счет словарь, в котором как раз описаны подобные связки. People как раз в него входит. Там есть еще другие, так что это нормально
    Ответ написан
    1 комментарий
  • Почему jQuery.getScript с использованием setInterval приводит к зависанию страницы?

    @egorinsk
    А вы используете средства разработчика (FireBug/Chrome Inspector) или расширения браузера? попробуйте отключить всю эту гадость, ситуация должна улучшиться.

    Например, фаерфоксовский фаербаг и хромовский инспектор известны своими зависаниями и адским потреблением ресурсов (памяти) на сложных страницах. Фаербаг еще и течет (не осовобождает занятую память) при этом.

    Ну и конечно, кроме этого, задачу вы решаете абсолютно криворуко и неправильно. Для этой задачи не нужны ни getScript (который фактически добавляет к странице элемет script), ни тем более воркеры (которые не будут работать в ИЕ). Надо просто делать обычный $.ajax(), а результат отдавать в виде JSON, и все у вас заработает.
    Ответ написан
    1 комментарий