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

Введение

Продолжаем тему. В данной статье задействуем несколько приемов метапрограммирования. Для наглядности напишем простую версию ORM (наподобие ActiveRecord).
Уверен, опытные разработчики Ruby не раз встречали различные приемы метапрограммирования изучая исходники gem'ов или стандартной библиотеки Ruby. ActiveRecord бесспорно использует все возможности Ruby, превращая использование сложного ORM в простой и удобный процесс.

В нашем примере реализуем простой базовый класс для всех «моделей» — очень упрощенный аналог ActiveRecord::Base, который будет предоставлять следующие возможности:
1) Новая модель добавляется наследованием от базового класса
2) Таблица именуются в базе по имени класса модели, к примеру: class Pet -> table pet; class Person -> table person (для упрощения)
3) Вставка/сохранение объекта в базе данных
4) Возможность поиска объекта по id и выборка всех объектов
5) Модель имеет атрибуты, соответствующие колонкам в таблице, а так же access-методы для данных атрибутов (для упрощения поддержка строковых и числовых значений)
6) Модель работает напрямую с адаптером mysql
Читать полностью »

Как мы боролись с проблемами производительности в «Redmine». Кто виноват и как помочь?
Конечно, статья не совсем верно названа. В чистом Redmine особо больших проблем с производительностью нет. Но мы, в процессе разработки большого количества плагинов, эти проблемы с легкостью вносили.

Поэтому, статья расскажет о том, как разобраться в чем причина медленной работы той или иной функции плагина Redmine и какие инструменты могут помочь в этом. Многие советы, естественно, могут касаться не только самого Redmine, но и Rails-приложений в целом.

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

в 10:05, , рубрики: ruby, sinatra, метки: ,

Для изучения ruby был выбран учебный проект в котором простая задача, написания тестов для web. Ввиду отсутствия знаний и опыта было решено использовать упрощенный фреймворк sinatra. Читать полностью »

Краткий обзор способов формирования JSON

На сегодняшний день в Rails имеются следующие способы сериализации объектов в JSON:

  1. Вызов to_json() напрямую.
  2. RABL
  3. Active model serializers
  4. JBuilder

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

image Более 1000 разработчиков придут в эту субботу на DevConf 2014,
уникальную конференцию которую создали сообщества разработчиков.
DevConf является результатом деятельности огромного количества профессионалов.
В организации каждого потока принимают участие уважаемые в соответствующем сообществе люди. Ни одного «пиарного» доклада за всю историю!

DevConf 2014 — уже завтра — 14 июня! Опубликована окончательная программа конференции
Читать полностью »

Не так давно я обнаружил одну интересную фичу в Руби. Мне показалась, что она может быть весьма полезной в определенных ситуациях. Тем не менее, я пришел к выводу, что этот трюк не так уж частно используется в коде, так как за многие годы программирования наткнулся я на него только сейчас. Идея в том, что мы можем дать еще один шанс коду, который привел к исключению (exception) и запустить его повторно. Давайте посмотрим, насколько легко это делается в руби.Читать полностью »

Небольшое дополнение для пользователей Mac OS X (у меня сейчас OSX 10.9.3, но будет работать и под младшие версии).
Для выполнения всех действий руководства от XakepRU в статье "Как запилить свой дешборд на все случаи жизни?" вам будет необходимо провести первоначальную настройку вашей ОС Mac OS X.

В установку OS X изначально вшит Ruby и использовать его для подобного рода проектов система просто так не даст и при попытке установки гемов будет ругаться на права записи.

Примерно так: You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory

Есть два варианта:

  • «расковырять» настройки системы и в случае неправильных действий, скажу грубо, поломать OS X. Ломать мы ничего не хотим поэтому данный вариант пропускаем и будем делать качественно.
  • установить менеджер версий Ruby, например, rbenv или RVM для установки дополнительной версии(й) Ruby, с которой вы сможете делать все, что захотите. Останавливаемся на этом варианте, буду писать про rbenv.

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

Redmine logo

Приведу кратко основное по RedMine:

  • ведение нескольких проектов;
  • система отслеживания ошибок;
  • диаграммы Ганта;
  • настраиваемые произвольные поля для инцидентов, временных затрат, проектов и пользователей;
  • лёгкая интеграция с системами управления версиями (SVN, Git, Mercurial);

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

DevConf::Ruby — 14 июня — программа сформирована14 июня (суббота) 2014 — пройдет крупнейшая конференция по Ruby, PHP, Python,JavaScript, Android

62 доклада от авторов языков, баз данных и экспертов в WEB-разработке!

Впервые в России нам удалось собрать авторов MySQL, PostgreSQL, Percona Server, Sphinx, Tarantool в отдельном потоке DevConf::Storage — по сути это отдельная конференция по современным БД.

Поток Ruby насыщен актуальными темами, который обязан знать каждый Ruby-разработчик

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

Ruby 2.1 в деталях (Часть 3)

Метод #singleton_class? для Module/Class

В классы Module и Class был добавлен метод #singleton_class?, который, как и следовало ожидать, возвращает, является ли получатель мета-классом (singleton)

class Example
  singleton_class?     #=> false
  class << self
    singleton_class?   #=> true
  end
end

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


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