Метка «ruby on rails» - 6

Здравствуйте, я — разработчик программного обеспечения на Ruby / Rails и я комментирую свой (а с недавних пор ещё и чужой) код. Голос из зала, вероятно, крикнул бы «Привет, разработчик!»

Много лет назад мне казалось очевидным устоявшееся мнение профессионалов и гуру разработки, которое обычно выражается примерно так: «Если код требует комментария — это плохой код, его нужно переписать/отрефакторить/упростить/уменьшить». Т.е. привести его к виду, комментариев и пояснений не требующему. В целом, этот подход достаточно универсален и работает во многих случаях. Многие мои знакомые веб-разработчики никогда не комментируют свой код и считают это вполне нормальным явлением, даже если работают в команде. Вероятно, сказывается миф о простоте Ruby, такой простоте, которая делает код понятным даже постороннему. Однако, мой личный опыт и некоторые эпизоды командной разработки веб-приложений убедили меня в том, что существуют ситуации и причины уделять комментариям и документированию кода больше внимания и времени, чем обычно уделяет разработчик.
Читать полностью »

Как написать высоконагруженный, многофункциональный проект вдвоём? Что делать, если нет денег и времени, а открываться нужно? Под катом немного интересной информации из личного опыта.

История одного highload проекта
Читать полностью »

в 16:14, , рубрики: activerecord, ruby, ruby on rails, метки: , ,

Сегодня я поделюсь своим набором не всегда очевидных функций и возможностей Active Record, с которыми я столкнулся в процессе разработки Ruby on Rails приложений или нашел в чужих блогах.

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

Многие Руби-разработчики игнорируют потоки (threads), хотя это очень полезный инструмент. В данной статье мы рассмотрим создание IO потоков в Руби и покажем как Руби справляется с потоками в которых происходит много вычислительных операций. Попробуем применить альтернативные имплементации Руби, а так же узнаем, каких результатов можно добиться при помощи модуля DRb. В конце статьи посмотрим, как эти принципы используются в различных серверах для аппликаций на Ruby on Rails.

IO потоки в Руби

Рассмотрим небольшой пример:

def call_remote(host)
  sleep 3 # симулируем долгий запрос к серверу
end

Если нам надо обратитьcя к двум серверам, например, чтобы очистить кэш, и мы дважды последовательно вызовем эту функцию:

call_remote 'host1/clear_caches'
call_remote 'host2/clear_caches'

то наша программа будет работать 6 секунд.

Мы можем ускорить исполнение программы, если будем использовать потоки, например, так:

threads = []

['host1', 'host2'].each do |host|
  threads << Thread.new do
    call_remote "#{host}/clear_caches"
  end
end

threads.each(&:join)

Мы создали два потока, в каждом потоке обратились к своему серверу и командами #join сказали, что главной программе (главному потоку) надо подождать их завершения. Теперь наша программа успешно выполняется в два раза быстрее, за 3 секунды.
Читать полностью »

Доброго времени суток читатель !

15 июня в севастопольская команда Kodo организовывает двухдневные курсы railskickstart, посвященные, как не сложно догадаться, экосистеме Ruby on Rails и связанные с ней технологиями. Наша цель – не демонстрировать 15-минутный блог и после этого говорить, как все замечательно. Такого материала в просторах интернета огромные кучи. Мы же хотим рассказать о вещах, которые остаются за кадром, о реальном опыте использования и даже случаях, когда лучше не использовать RoR. Да, вам это не показалось – есть очень много случаев, когда использовать рельсы не самый лучший вариант. Однако, стоит понимать, что 2 дня — это очень малый промежуток времени, за который можно только прикоснуться к чему-то, но не понять. Поэтому мы запускаем курс материалов, направленных на знакомство с Rails. Надеемся, что прочитав их, будущий участник будет говорить с нами на одном языке, и обрастет многочисленными вопросами, на который мы с радостью ответим. Если же вы не живете в г. Севастополе или не можете прийти к нам 15 и 16 числа, то это совсем не повод не читать их(статьи) и не задавать возникшие вопросы и пожелания в комментариях.

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

Зачем.

В этой маленькой статье, которую с удовольствием прочитал бы сам неделю назад, я попытался собрать все вещи, которые понадобились бы человеку, задумай он «с нуля» написать приложение на RoR. То есть не углубляясь ни в одну из областей, описать необходимый минимум действий, чтобы установить, настроить и написать своё первое приложение.Здесь собрано, как мне кажется, всё, что нужно и я надеюсь этот текст сэкономит кому-нибудь несколько часов поиска в интернете). Сам изучаю RoR вторую неделю, так что не судите строго).

Установка.

Просто и быстро ror ставится через rvm c rvm.io/.

>curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled

Запустить rvm:

>source /Путь_к_домашней_директории*/.rvm/scripts/rvm

*$HOME в дальнейшем.
После этого в $HOME/.bash_profile должна появиться строчка:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

и при каждом открытии консоли rvm будет подгружаться, но у меня этого не случилось — пришлось ещё в $HOME/bashrc прописывать:

. ~/.bash_profile

Теперь всё точно должно быть хорошо.
Устанавливаем нужную(скорее всего это будет самая последняя) версию руби (сколько их и в чём отличие можно посмотреть сдесь -http://www.ruby-lang.org).

>rvm install 1.9.3

Проверка на успешность создания

>ruby -v

должна вернуть более подробную информацию, вроде

ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux].

В процессе установки я случайно установил несколько версий, что потом доставило некоторые неприятности). Посмотреть список установленных версий руби можно так:
>rvm list
Если версий несколько, то текущая будет помечена "=>", дефолтная — "*", а текущая и дефолтная — "=*". Поменять на нужную используемую версию можно так:

>rvm use ruby-1.9.2-p320 (любая нужная версия)

Чтобы поменять дефолтную версию руби пишем:

>rvm use ruby-1.9.2-p320 --default

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

RubyMine 5.4 готов к выходу Rails 4 Мы рады сообщить о том, что новая версия RubyMine, интегрированной среды разработки для Ruby on Rails, доступна для скачивания.

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

Вместо вступления

Я хочу рассказать вам о некоторых трудностях, с которыми мы столкнулись при разработке встраиваемого JavaScript приложения, виджета комментариев "Комментатр".
В этой статье я опишу некоторые проблемы и тонкости разработки подобных приложений, а также предложу варианты их решения.
В качестве backend–решения мы используем приложение на Ruby on Rails, поэтому некоторые фрагменты этой статьи будут специфичны для Rails–окружения.

Комментатр состоит из двух проектов: API и виджета, который устанавливается на сайт клиента. Речь пойдет об их взаимодействии между собой и виджета с сайтом клиента. В основном общение виджета и API происходит посредством JSONP, который, как известно, поддерживает только GET–запросы. В связи с этим возникает первая сложность.

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

Фреймворк Ruby on Rails меня просто очаровывает, но недавнего времени некоторую сложность представляла из себя генерация CRUD контроллеров.

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

  • стандартный генератор scaffold_controller — ничего подобного нет, CRUD с простейшим дизайном
  • nifty Scaffold — его разработка приостановлена, но все равно фильтрации и сортировки нет
  • гем для DataTable — не прижился, он обеспечивает только представление данных, а код для фильтрации и сортировки пришлось бы писать самому

Долгое время не удавалось найти ничего похожего на полюбившийся мне виджет CGridView из Yii framework. Уже почти смирился с необходимостью писать свой велосипед, но наткнулся на DRY CRUD и хочу поделится опытом его использования. Может кому-то он окажется полезным, а может кто-то подскажет еще более подходящий инструмент.
Читать полностью »

Поход к цели длиною в жизнь

Преамбула

Если вы полным ходом идёте к успеху, то эта история вряд ли сможет чему-то вас научить, но если вы умудрились родиться там, где смертность превышает рождаемость, а прогресс только снится, где вместо современных гаджетов — попытки заработать на еду, в месте, которое больше напоминает постапокалиптические фильмы, то я буду только рад, если дальнейшая последовательность слов вам чем-то сможет помочь.

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

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


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