войти зарегистрироваться

Блог компании Round LakeSOAP-сервер на Rails 3.x (WashOut)

Поддержка SOAP (как сервера) в Rails ухудшалась от версии к версии. В версии 1.x рельсы комплектовались AWS. В версии 2.x AWS распался на несколько форков, которые поддерживали энтузиасты. До версии 3.х, в стабильно работающем исполнении, AWS не дожил. Идеологически подобное отношение к SOAP может нравиться или не нравиться, но в реальной жизни мы окружены великим и ужасным Enterpris'ом. И поддержка двустороннего SOAP'а может понадобиться в любой интеграции: от 1С, до автоматизированных банковских систем.

Вместо поддержки еще большего количества (мертворожденных?) форков AWS для 3-ей версии, мы написали WashOut.

Ruby on RailsMongodbLogger — складываем логи вашего Rails 3 приложения в MongoDB

image

Привет всем. Сегодня я поведаю о своей разработке для Rails 3 — MongodbLogger. Начнем по порядку.

Rails приложение по-умолчанию складывает логи запросов в папку logs. Сами по себе логи очень удобная штука — они помогают посмотреть какие запросы идут в ваше приложение, посмотреть trace ошибки и прочее. В них можно дописывать дополнительную информацию. Хотя файловый лог прост и эффективен, но у него есть определенные ограничения: при использовании множество веб-серверова, лог у каждого свой; нет простого доступа. Запись в РСУБД решает вопросы централизации и простого доступа логов, но сразу возникают другие проблемы: схема таблицы не настолько гибка, как может быть структура лога; запись может быть недостаточно быстра; чистка старых логов — задачи на Ваших плечах. И тут на помощь приходит MongoDB.

Ruby on RailsInboxes: личные сообщения в Rails-приложении



Одна из тривиальных задач для RoR-разработчика: реализовать функционал “инбоксов”, или личных сообщений. Решать эту задачу приходиться чуть ли не на каждом из проектов, поэтому столкнувшись с этим в очередной раз я принял решение создать удобный компонент мессенджера для приложения на Rails 3.1, который в дальнейшем можно будет легко и удобно подключать к любому приложению.
Представляю gem Inboxes.

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

Для авторизации и идентификации пользователей gem интегрируется с Devise, для проверки прав — с CanCan.

Ruby on Railshas_many :through => Как быстро обратиться к join-объектам?

Вы знаете, что когда требуется организовать many-to-many отношения между двумя моделями, прогрессивная часть человечества применяет join-таблицы и метод has_many с опцией :through => :join_model_name. Каждая связь между двумя ActiveRecord-объектами представляет собой ActiveRecord-объект.

И это чудесно, ибо в join-таблице можно насоздавать полезных (так называемых «extra») полей с дополнительной информацией о связях между объектами.

Вопрос в том, как красиво достучаться до этих extra атрибутов.

Все скринкасты и книжки, как назло, оперируют простыми примерами. Например, дружат между собой модели Article и Category. Само собой, для join-класса интуитивно напрашивается имя Categorization или ArticleCategorization.

has_many through

Соответственно, если у нас есть два объекта — article и category, и мы хотим найти AR-объект (или объекты), олицетворяющий связь между ними, то авторы книжек с чистым сердцем предлагают делать так:

relations = article.article_categorizations.find_by_category_id(category)


В жизни все сложнее. Модели нередко имеют длинные составные имена, либо между моделями такая связь, что придумывание имени для каждой join-модели превращается в маленькую пытку. Представим, что у нас модели не Article и Category, а UserGroup и Community, или Preorder и CustomerNotification. Как должна называться связующая модель? Возможны варианты.

Ruby on RailsВалидационные сообщения на русском в Rails 3 из песочницы

Тема простая, но мне пришлось потратить некоторое время, прежде чем из разрозненных источников я понял, как наиболее быстро и просто получить сообщения об ошибках валидации на русском. Этот пост поможет сэкономить немного времени новичкам.

Ruby on RailsРуководство по Asset Pipeline

image Asset Pipeline — фреймворк для сборки и сжатия JS и CSS, который представляет собой одну из killer-feature версии 3.1. А еще он добавляет возможность «из коробки» писать их на других языках, таких как CoffeScript, SASS и ERB.
В версиях до 3.1 эта функциональность обеспечивалась через Jammit или Sprockets. Rails 3.1 включает gem sprockets-rails, который использует Sprockets.

По умолчанию, в каждом новом Rails-приложении asset pipeline включен. Отключить его можно в application.rb параметром config.assets.enabled=false

Предназначение

Основная функция Pipeline — объединение все подключаемых файлов (assets) в один, что ускоряет загрузку страницы браузером.
Вторая по важности функция — сжатие ресурсов. В CSS это удаление пробелов и переносов строк, в JS логика сжатия более продвинута. Вы можете выбрать любой компрессор JS из существующих (uglifier, closure-compiler, therubyracer или yui-compressor) или создать свой собственный.
Третья — возможность написание asset'а в любом формате. Asset pipeline соберет и сожмет файлы, написанные на любом поддерживаемом языке.

Ruby on RailsActionMailer_X509: подписываем и шифруем письма прямо в Ruby On Rails

В одном из последних проектов понадобилось подписывать и шифровать с помощью сертификатов X.509 письма, отправляемые приложением на Ruby on Rails 3. Беглый поиск привёл к плагину actionmailer_x509, а вот дальше начались проблемы.

Выяснилось, что он не обновлялся с 2008 года, скорее всего не работает с Rails 3 (в частности, смущал комментарий автора: «It has been tested with Rails 2.0.1») и умеет только подписывать, но не шифровать письма. Поиск альтернативных решений ничего не дал, и пришлось знакомиться с плагином поближе.

Ruby on RailsГенерация PDF с помощью Prawn

Prawn Rails PDF
Введение

В топике я рассмотрю создание PDF-документов средствами Ruby/Rails, их генерацию, скачивание напрямую с сайта или создание через rake task, а также возможность отправки во вложении через Mailer.
Работать будем с Rails 3.0.9 и gem'ом Prawn.

Ruby on RailsСоздание семантического веб-приложения

railsrdf
В рамках моего дипломного проекта мне предложили создать систему формирования проектных команд на основе технологий семантической паутины. Так как я уже переболел голым PHP, SQL, ZF, и имел опыт программирования на Ruby on Rails, ознакомившись с существующими гемами и решениями для работы с RDF, решил писать на нём, т.к. не очень люблю яву (да простят меня ява-разработчики), хотя она и является самым передовым языком в области semantic web, intelligent agents, data mining.

Ruby on RailsРазговариваем с Rails-приложением через XMPP (Jabber)


Статья расскажет о том, как получать сообщения от вашего Rails-приложения по протоколу XMPP (Jabber) и наоборот, управлять приложением, отправляя ему команды через XMPP.