Рубрика «ruby» - 53

Ruby — очень интересный язык. Одной из его особенностей является возможность выполнения заданных функций при добавлении модуля в класс. Стандартный пример выглядит следующим образом:

module MyModule
  module InstanceMethods
  end

  module ClassMethods
  end

  def self.included(base)
    base.include(InstanceMethods)
    base.extend(ClassMethods)
  end
end

Здесь создаются два под-модуля в рамках текущего модуля для разделения методов инстанса и методов класса. При «примешивании» модуля MyModule в класс выполняется функция included, которая добавляет необходимые методы класса и методы объектов класса.

Не так давно я открыл для себя еще одну подобную функцию, которая выполняется при наследованииЧитать полностью »

Начну с банального примечания — данная утилита является лишь дополнением к существующим тест фреймворком, а не их заменой.
И ничего особенного в ней нет, просто очень удобно работать.

Мотивация:

  1. Визуальный контакт. Я хочу чтобы спецификации физически находились рядом, в том же файле или папке, но никак не в амбаре.
  2. Умные браузеры. Когда я пишу спецификацию для определённого action-а, браузер должен определять адрес автоматически.
  3. Никаких хаков. Тестируемые объекты и базовые классы Ruby должны остаться в нетронутом состоянии.

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

Эта статья иллюстрирует реальное применение и получение выигрыша в производительности на примере закачки файлов в хранилище Amazon S3 с использованием многопоточности на языке Ruby с использованием gem aws-sdk.
Читать полностью »

Подкаст

Rpod

Новости

Errbit — opensource error catcher совместимый с Airbrake API
Ruby style guide
Jbuilder от DHH
GC in Ruby 2.0
Документация по Rails, Ruby-core и Ruby stdlib
Валидация на грани фола — статья на харбре про валидацию
23 марта вышел Factory Girl 3.0
17 марта вышел Rspec 2.9.0

Специальный гость

Алексей Вахов

«Документация — это то, как люди думают, как работает код»
«Меньше кода — больше смысла»

Блог Алексея
Twitter
Профиль на GitHub
Семантическое версионирование
Алексей на странице контрибьюторов Rails
Автоматические миграции — gem automigration
gem booter

Алексей и бэквокалистка Вафля в студии RubyNoName

image

Контакты RubyNoName подкаста

Наш твиттер
Email для предложенией
Читать полностью »

Добрый день дамы и господа!

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

Поможем человеку сравнить картинки, или о Тестировании Локализации приложения

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

image

Ты современный Web-разработчик?

Задай себе вопросы:

  • Готов ли ты перейти на PHP 5.4?
  • Стоит ли переходить на MariaDB?
  • Как работает Python с вебсокетами, базами под нагрузкой?
  • Что дает Google Closure Templates?
  • Как запустить большой проект на Ruby?
  • Можешь ли спроектировать успешный HighLoad проект?
  • Сможешь ли создать распределенный офис разработки проектов?
  • Как успешно внедрить Kanban и Scrum в небольшой команде

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

Python vs Ruby Данная флеймообразующая статья призвана собрать в одном месте актуальную информацию по преимуществам Python над Ruby и Ruby над Python. Основываясь на собственном многолетнем опыте использования обоих языков, я постарался ограничить сравнение языками как таковыми и их стандартными библиотеками — сравнение web фреймворков, сред разработки и доступных библиотек не включены в статью, так как здесь и без меня немало копий сломано.
Читать полностью »

Управление интернационализацией в Rails при помощи сторонних сервисов

Одним из самых моих любимых компонентов Rails является организация интернационализации и локализации при помощи класса I18n и файлов-словарей ( еn.yml, ru.yml и т.д. ). Но если брать не «сферический проект в вакууме», а реальное приложение с группой разработчиков и кучей веток в репозитории — то иногда голова пухнет разрешать конфликты при объединении разных веток/версий которые так или иначе возникают в файлах локалей. Как быть? Тут-то нам напомощь и приходят различные сторонние сервисы со своими гемами.Читать полностью »

Обычно про валидацию в рельсах говорят только хорошее. Сегодня мы поговорим о некоторых ситуациях где система дает сбой.

Ситуация раз

При регистрации пользователя мы как обычно хотим сделать подтверждение пароля. Нет проблем, добавляем :confirmation => true. Через какое-то время у сайта появляется мобильное приложение, в котором тоже реализована регистрация, но подтверждения пароля там уже нет. Как поступить в этом случае?

решение под катом
Читать полностью »

С развитием браузерных MVC-фреймворков, Rails очень часто стали упоминать в контексте удобного фреймворка для REST-провайдеров. Мы тоже используем Rails для этой цели и достаточно долго. Есть, однако, очень большая проблема: представления. Вьюшки, которые описывают структуру JSON для ответа.

На первый взгляд, все просто отлично. Ничего кроме .to_json или RABL, в некоторых сложных случаях, не требуется. Но затем ситуация выходи из под контроля. И идут бесконечные циклы перебора JSON-билдеров в поисках лучшей жизни.

Проблема

Давайте возьмем для примера банковский сервис. Он состоит из 30 моделей. Каждая модель представлена CRUD-реурсом (в каждом по 3-4 расширяющих метода). В каждой модели 10-12 полей и это обычно длинные строки. И, конечно, все они связаны. Вплоть до 4-5 уровней belongs_to.

При этом важно помнить, что в реальной жизни JSON ответа – это не просто прямой дамп структуры модели. В нем постоянно встречаются условия (какой атрибут должен попасть в ответ? Зависит от другого атрибута) и кастомные методы.

Проблема представлений заключается в том, что клиенту REST-сервиса нужен уникальный набор полей модели для каждой такой модели и _для каждого метода_ этого REST-ресурса. И не забудьте про вложенные сущности.
Читать полностью »


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