Рубрика «rails»

TL;DR: Тропа SPA темна и полна ужасов. Ты можешь бесстрашно сражаться с ними… или выбрать другой путь, который приведёт тебя к нужному месту: современный Rails.

Выбираемся из кроличей норы SPA при помощи современного Rails - 1

Я вспоминаю, как думал, что Rails фокусируется на неправильной цели, когда DHH анонсировали Turbolinks в 2012 году. Тогда я был убеждён в том, что мгновенное время ответа во время взаимодействия с пользователем — это ключ к превосходному UX. Из-за возникающих задержек сети, такая интерактивность возможна, только если вы минимизируете зависимость от сети и вместо сетевых обращений поддерживаете большую часть состояния на клиенте.

Я думал, что это необходимо для приложений, над которыми я работал. И с таким мнением я перепробовал множество подходов и фреймворков для реализации одного и того же шаблона: Single-page applications (SPA). Я верил, что SPA — это будущее. Несколько лет спустя, я не уверен в том, каково же будущее, но я точно хочу найти альтернативу.
Читать полностью »

Когда Феникс успел убить Рейлс? - 1

Случается, что некоторые задачи не удаётся решить на привычном для вас языке программирования. Предположим, перед нами встала задача реализовать обмен сообщениями в реальном времени при больших объёмах трафика. Как сделать это оптимально? По понятным причинам, Руби – не лучший для этого вариант, поэтому придётся начинать поиски альтернатив. Перед вами появится множество путей, и как для рубиста, самым оптимальным выбором будет использование Эликсира.

Эликсир – функциональный язык программирования с синтаксисом Руби, работающий на виртуальной машине Эрланга. Следовательно, для человека из мира Руби знакомство с языком пройдёт очень легко. Хотя для того, чтобы понять его полностью, придётся постараться, не раз перечитывая документацию.

Ответ на вопрос из заголовка и масса интересного об Эликсире сразу же под катом.

Читать полностью »

Развертывание и сопровождение Redmine, правильный путь - 1

Дисклеймер: это не обычное руководство вида «Как установить Redmine». В нем я не буду погружаться в настройку базы данных или установку веб-сервера. Я также не буду рассказывать о настройке Redmine. Документация по Redmine в этом плане является достаточно полной. А для того, что не упоминается в официальной документации, есть общая процедура запуска Rails-приложений, которую можно легко найти в Интернете.

Вместо этого речь пойдет о сопровождении собственной, более или менее кастомизированной версии Redmine, которая может быть развернута с помощью одной команды оболочки, когда это необходимо.

Готовы? Тогда начнём.

Читать полностью »

ecto

Вступление

Ecto написанный на Elixir DSL для коммуникации с базами данных. Ecto это не ORM. Почему? Да, потому что Elixir не объектно-ориентированный язык, вот и Ecto не может быть Object-Relational Mapping (объектно-реляционным отображением). Ecto — это абстракция над базами данных состоящая из нескольких больших модулей, которые позволяют создавать миграции, объявлять модели (схемы), добавлять и обновлять данные, а также посылать к ним запросы.

Если вы знакомы с Rails, то для вас самой близкой аналогией, конечно же, будет его ORM ActiveRecord. Но эти две системы не являются копиями друг друга, и хороши в использовании в рамках своих базовых языков. На данный момент актуальная версия Ecto 2, она совместима с PostgreSQL и MySQL. Более ранняя версия дополнительно имеет совместимость с MSSQL, SQLite3 и MongoDB. Независимо от того, какая используется СУБД, формат функций Ecto будет всегда одинаковый. Также Ecto идёт из коробки с Phoenix и является хорошим стандартным решением.

Если надумаете расширить брошюру, то милости прошу присоединиться к развитию данного репозитория https://github.com/wunsh/ecto-book-ru

Новшества Ecto 2.X

Читать полностью »

RailsClub 2016 22 октября, билетов осталось совсем мало. Не откладывайте регистрацию, если собираетесь идти! Мы публикуем разговоры с нашими спикерами, и сегодня это Steve Klabnik — член Rust core team, активный open source контрибьютер и очень интересный собеседник!
Автор книг “The Rust Programming Language”, “Rails 4 in Action” и “Designing Hypermedia APIs”. Живет в Бруклине, сам о себе пишет, что «проводит слишком много времени на GitHub».

Стив уже выступал на RailsClub в 2012 году. И мы также публиковали интервью с ним (любопытным можно посмотреть тут). С тех пор Стив плотно занялся Rust, сделал много интересных штук и мы поняли, что нужно обязательно пригласить его снова :)

Думаю, эта наша публикация будет интересна не только рубистам, но и поклонникам Rust, которых в России становится все больше. На последнем митапе к нам подошли ребята из русскоязычного Rust-сообщества rustycrate.ru . Приглашают всех, кто после RailsClub заинтересуется Rust, не стесняться присоединяться и задавать вопросы.

image
Доклад на нашей конференции — Exploring Ruby through Rust.
Ruby написан на C. Многие классы, которые мы знаем и любим, написаны на Ruby, некоторые нет. Изучая, как работает MRI мы можем узнать о Ruby много интересного. В докладе Стив покажет веселый хак: перепишет куски Ruby-интерпретатора на Rust. В процессе много узнаем о внутреннем устройстве Ruby и о том, как начать хакать код на С.

Под катом приводим наши вопросы, ответы Стива в оригинале и нашем вольном переводе:
Читать полностью »

Юхуу! Неделя до конференции RailsClub 2016. Все наши гости (включая Матца, да) совсем скоро прилетят в Москву. А мы готовим 600 пакетов раздатки, 600 ланчбоксов с обедами, несчетное количество чая и кофе, маффинов и пирожков, вовсю репетируем доклады со спикерами.

Еще можно успеть заскочить в последний вагон и поучаствовать в главном Ruby событии года в России.
Купить билет и зарезервировать себе местечко в зале можно на Railsclub.ru

image
Сегодня мы хотим показать вам интервью с Zach Briggs, спикером предстоящей конференции.
Он из Чикаго, работает в TableXI, выступал с докладами и воркшопами на RailsConf, CodeMash, Barcelona Ruby Conf, KalamazooX и многих других конференциях.

Вот тезисы предстоящего доклада:

JavaScript for Rails Devs

JavaScript на фронтенеде сегодня — это болото баззвородов, плохих абстракций и неоправданно сложных инструментов. К счастью для нас, есть простые техники, которые мы можем использовать, чтобы не сгинуть в этой пучине и построить динамичный и современный интерфейс, который помогает людям решать проблемы.
В докладе Зак покажет технику, с помощью которой можно встроить компоненты JavaScript внутрь страниц, которые ренедерятся на сервере, чтобы создать островки интерактивности. Ее можно использовать в уже существующей системе, добавив всего 20KB заархивированного JavaScript и немного здравого смысла.

Мы считаем, что это стоит знать!
Под катом ответы Зака на наши вопросы о технологиях и жизни. Как обычно, публикуем ответы в оригинале и нашем вольном переводе.
Читать полностью »

Руби(н) vs Питон: самые важные вопросы и ответы - 1

«Питон или Руби» — это один из самых горячо обсуждаемых топиков в мире программирования. Впереди него только “emacs или vim” и “pro-skub или anti-skub” по важности и сложности. Сегодня мы изучим разницу и ответим на вопросы, а также объективно и окончательно решим, что лучше.

Что такое Питон?

Питон это крупная змея, которая обитает в юго-восточных регионах планеты. Они не ядовитые и нейтрализуют врагов в основном удушением. Многие из сохранившихся видов находятся под угрозой исчезновения.

Что такое Руби(н)?

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

В чем схожесть?

Для незнакомого с темой человека рубин и питон могут показаться идентичными:

  • Динамическая типизация: Тип, к которому относится слово, динамически определяется из контекста. Питон может относится к семейству (питонов), роду (broghammerus) или к виду (сетчатый питон). Аналогично, рубин может быть конкретным минералом (корунд с примесями хрома), или относиться к общей категории красных камней.
  • Интерпретируемый: Питоны и рубины часто используются как символы и метафоры, особенно в поэзии и мифологии.
  • Объектно-ориентированные: Они оба — объекты, но некоторым людям некомфортно относиться к животным как к объектам.
  • Высокоуровневые: Я изучал в университете физику, и все, что больше атома водорода считаю «высокоуровневым». Я не шучу. Мы еще не нашли решение уравнению Шредингера для атома гелия, а это все лишь атом водорода с дополнительной болтающейся хреновиной.Читать полностью »

Представим, что перед вами стоит задача организовать аутентификацию пользователя (в мобильном приложении, в первую очередь) так, как это сделано в Telegram/Viber/WhatsApp. А именно реализовать в API возможность осуществить следующие шаги:

  • Пользователь вводит свой номер телефона и ему на телефон приходит СМС с кодом.
  • Пользователь вводит код из СМС и приложение его аутентифицирует и авторизует.
  • Пользователь открывает приложение повторно, и он уже аутентифицирован и авторизован.

Я постараюсь кратко изложить выработанный подход к этому вопросу. Подразумевается, что у вас API, HTTPS и, вероятно, REST. Какой у вас там набор остальных технологий неважно. Если интересно — добро пожаловать под кат.

Читать полностью »

Видимо на неделе гугл отключил svn репозитории code.google.com.
Если вы не подключали скрипты, раздаваемые из этих репозиториев, вы могли этого не заметить, как и я.
Меня удивил увеличившийся трафик в репозиторий google-maps-utility-library-v3, но сначала я не понял, почему это может быть. Позже я увидел, что пропали изображения иконок кластеров на карте. Дело в том, что путь до иконок захардкожен в MarkerClusterer и указывает на code.google.com.

Как настроить sprockets раздавать эти картинки, читайте под катом.

Читать полностью »

Рельсы знамениты своим правилом «соглашения преобладают над конфигурацией» (Convention over Сonfiguration). Однако иногда, очень редко, некоторые вещи приходится делать по-другому. Одним из таких случаев я хочу поделиться в статье. Расскажу, как сделать свой первичный ключ в таблице (использую Rails 4.2.0). Ничего сложного, по сути, но вопросы о том, как это сделать, время от времени задают, а ответы не всегда хорошие.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js