Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.
На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решен ие.
Для новичков, задача на неделю
У Logux есть WebSocket-сервер, который посылает новые сообщения в Rails-приложение. Сейчас новое сообщение проходит 2 стадии — проверку прав доступа и сохранение данных в БД. Нужно добавить третий шаг — определение того, в какие каналы нужно переслать сообщение.
Обработка сообщений от Logux идет в Logux::ActionController:
module Actions
  class Comment < Logux::ActionController
    def add
      respond :processed
    end
  end
endНужно добавить метод resend, который будет принимать хэш:
    def add
      resend channel: 'users'
      respond :processed
    endЭтот метод будет писать в ответ Logux-серверу:
["resend", @meta.id, { "channel": "users" }]Польза: получить open source портфолио в Ruby, научиться работать с Logux.
action_controller.rb метод resend, который будет сохранять переданные данные о том, куда надо переслать событие.action_caller.rb и action.rb, чтобы они писали в ответ ["resend",…],["processed",…].["resend",…] писался в поток, как только будет вызван resend в контроллере. Так можно будет начать пересылку событий еще до сохранения сообщения в базе.