Обновить
-1.8

Ruby on Rails *

Фреймворк, написанный на Ruby

Сначала показывать
Порог рейтинга
Уровень сложности

Шаблонизатор Slim — альтернатива Haml'y

Время на прочтение5 мин
Количество просмотров76K
Давно хотел попробовать Haml, но всё не было времени. Но вот недавно обнаружил новый шаблонизатор, который мне сразу понравился. По словам создателей, он взял лучшее от Jade и Haml. Основная задача — сократить объем кода, при этом не делая его страшным и непонятным.

Вот так выглядит шаблон с использованием Slim:
doctype html
html
  head
    title Slim Examples
    meta name="keywords" content="template language"

  body
    h1 Markup examples
    #content.example1
      p Nest by indentation

    = yield

    - unless items.empty?
      table
        - for item in items do
          tr
            td = item.name
            td = item.price
    - else
      p No items found

    #footer
      | Copyright © 2010 Andrew Stone

    = render 'tracking_code'

    script
      | $(content).do_something();

Читать дальше →

Секрет объектно-ориентированной разработки в Rails

Время на прочтение10 мин
Количество просмотров2.7K
Сегодня мы предоставим вашему вниманию перевод поста Стива Клабника (Steve Klabnik), известного разработчика, приверженца Ruby, одного из победителей Ruby Hero Award этого года. Что это за награда? Она присуждается победителями прошлого года тем участникам сообщества, которые наиболее проявили себя: создали значимый обучающий контент, разработали плагины и гемы, участвовали в проектах с открытым кодом. Такая награда была создана для того, чтобы отметить наиболее проявивших себя людей и дать им признание, которое они заслуживают.
Пообщаться со Стивом можно будет на конференции в Киеве RubyC 5-6 ноября этого года.


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

Мне кажется, эти люди также считают эту вещь уникальной. Это не когда люди, не умеющие писать хороший код, стараются, но все равно получается плохо. Это как флаг, сигнал. Теперь, когда я вижу, как кто-то внедряет эту вещь, я сразу думаю: «он шарит». Возможно, я слишком сильно доверяю своему чувству, но эта продвинутая техника разработки предлагает множество взаимосвязанных преимуществ вашим Rails приложениям, легко применима и ускоряет тестирование на порядок или больше. К сожалению, для многих начинающих Rails разработчиков это неочевидно, но я хотел бы, чтобы вы писали код лучше и вот я здесь, чтобы, с вашего позволения, «раскрыть секрет» и поделиться этой мощной техникой с вами.

Читать дальше →

Встать на рельсы за четыре месяца или Finance on rails

Время на прочтение4 мин
Количество просмотров52K

Обойдусь без копипастов и даже ссылок о том, что Ruby за зверь такой, ибо написано было уже сполна. В данном посте просто хочу рассказать о пути изучения Ruby (и, впоследствии фреймворка Ruby on Rails) человека далекого от программирования.

1. Любопытство

«Насколько далекого?», спросите вы, а я отвечу — «Чуть менее, чем полностью», так как в десятом классе в школе у меня были уроки программирования, парочка из которых были уделены Паскалю. Признаюсь, впоследствии о html узнал, и даже мог в Dreamweaver-e сверстать страничку или поставить готовый движок, да по инструкции налепить плагинов, но не более.
Хотя компьютеры мне нравились, пошел я учиться на экономиста* — бакалавриат, магистратура по бух. учету и аудиту, аспирантура по финансам, работа в банке, преподавание, страхование. Но не жилось мне спокойно в финансах, — финансовый калькулятор удовлетворял необходимости решения тривиальных задач, но не удовлетворял мой мозг. А ему хотелось посчитать не только будущую и приведенную стоимость актива, но и создать массив данных из исторических стоимостей этого актива за n лет, высчитать среднюю доходность, дисперсию и, в конце-концов построить красивый график!
Читать дальше →

Рецепт использования Asset Pipeline

Время на прочтение2 мин
Количество просмотров16K
Пост навеян долгим апробированием различных гипотез правильной работы с изображениями через Asset Pipeline после перехода на Ruby on Rails 3.1 с предыдущих версий.

Итак, Задача


В CSS файле указать изображение, находящееся в папке assets. Изображение в production-среде должно быть предварительно скомпилировано.
Казалось бы, ну что тут такого ведь есть официальный гайд, адаптированный перевод гайда, скринкаст, в конце-то концов. Здесь правило «It just works» работает только, если вы не допускали своих (или чужих) рук до чувствительных точек. Каких именно?
Читать дальше →

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

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

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

Как я знакомился с плагином и писал новый gem

Oauth 2 провайдер за 30 минут

Время на прочтение2 мин
Количество просмотров11K
Представим, что в один прекрасный день вы решаете подключить oauth2 к своему проекту на ruby on rails. Так как аутентификация большинства rails приложений сейчас идет через devise, то неплохо было бы заинтегрировать oauth2 с этим гемом. Благо, все придумали до нас, поэтому встречайте — devise_oauth2_providable. С этим гемом интеграция и тестирование oauth2 провайдера у вас отнимет времени не больше, чем поход в магазин.

Узнать как

Ruby on Rails + legacy_migrations: односторонняя синхронизация данных между двумя проектами

Время на прочтение5 мин
Количество просмотров3.9K
Эта статья ставит целью описать решение одной нетривиальной задачи — автоматическая односторонняя синхронизация данных в базах двух проектов средствами Ruby on Rails, гема legacy_migrations и относительно прямых рук.

Исходная ситуация


Имеется нагруженный проект, писавшийся на протяжении 3-х лет в несколько этапов без серьезного рефакторинга, отчего код разбух и используемые технологии ощутимо устарели. Было принято решение переписать проект с нуля на всем новом.
Читать дальше →

Как DRYить модели

Время на прочтение5 мин
Количество просмотров18K
В большинстве рельсовых проектов основная концентрация кода приходится на модели. Все наверняка читали про Slim controllers & fat models и стараются впихать в модели как можно больше, а в контроллеры как можно меньше. Что ж, это похвально, однако в стремлении утолстить модели многие часто забывают про принцип DRY — don't (fucking) repeat yourself.

Я тут постараюсь вкратце расписать, как в районе моделей и рыбку съесть, и про DRY не забыть.

Читать дальше →

Быстрая автоматическая установка Ruby on Rails на IIS 7

Время на прочтение4 мин
Количество просмотров7.2K
Популярность фреймворка Ruby on Rails постоянно растет, общество становится шире и, если раньше об использовании Ruby на Windows говорилось редко, то сегодня это вполне реальная практика.

Такие проекты как RubyInstaller (http://rubyinstaller.org/) и RailsInstaller (http://railsinstaller.org/) значительно упрощают создание рабочей среды на Windows. Вы можете использовать нативный MRI 1.8 и 1.9, JRuby или даже IronRuby работающий на .NET. С Windows работает большинство gem-пакетов, причем благодаря DevKit (https://github.com/oneclick/rubyinstaller/wiki/Development-Kit) «сишные» джемы можно собирать прямо из исходников.

Однако, несмотря на активное развитие средств разработки, до сих пор Windows и в частности веб-сервер IIS практически не использовались как «продакшн» решение для развертки Rails приложений. Но с появлением нового инструмента Helicon Zoo на базе Web Platform Installer – эта ситуация поменялась.

Helicon Zoo


Helicon Zoo – это репозиторий веб фреймворков и приложений, позволяющий легко устанавливать и запускать Rails, Django (фактически любые rack, wsgi или FastCGI приложения) и Mojolicious на веб-сервере IIS.

Читать дальше →

WebSockets в Rails приложении

Время на прочтение3 мин
Количество просмотров17K
Недавно я столкнулся с необходимостью реализовать небольшой чат в одном из Rails-проектов. Существует много способов решения данной задачи, начиная от периодических опросов сервера с помощью AJAX и заканчивая использованием готовых решений сторонних сервисов. С целью минимизации трафика и времени отклика системы было принято решение использовать WebSocket API – одну из частей стандарта HTML 5, позволяющую серверу инициировать передачу данных, не дожидаясь запроса клиента. К сожалению WebSocket API поддерживается достаточно ограниченным числом браузеров, среди которых Google Chrome, Safari 5, Mobile Safari в iOS 4.2 и выше и пожалуй все (если я ошибаюсь – поправьте меня в комментариях). Конечно же этого недостаточно для боевого приложения, поэтому необходимо предложить запасной вариант для браузеров без нативной поддержки WebSocket API. Удобнее всего в этом случае использовать Flash Sockets. С помощью WebSocket API и Flash Sockets приложение покрывает большую часть возможных случаев, включая как настольные системы (MS Windows, Linux, Mac OS X), так и мобильные (Android, iOS).
Читать дальше →

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

Время на прочтение4 мин
Количество просмотров13K
Prawn Rails PDF
Введение

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

Поехали!

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

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

Ближайшие события

Rails custom Scaffolding

Время на прочтение4 мин
Количество просмотров26K

Наверное каждый в начале работы с ROR был впечатлен возможностью Scaffolding'а, который позволяет одной командой создавать migrations, controllers, models и views.

Но что делать если в своем проекте вы используете не стандартные Rails утилиты: erb, Test::Unit, fixturies, а сторонние инструменты: Haml, Rspec, Cucumber, Factory Girl и более того, хотите добавить собственные шаблоны?

Интересно? GOTO next line.

Исходные данные:
Ruby on Rails; Rspec; will-paginate; Haml; Factory-girl

Задача:
% rails generate scaffold post post:string
Генерирует:
  1. contoller's с поддержкой will_paginate, русскоязычными сообщениями
  2. model's с поддержкой will_paginate
  3. view's с заданным нами содержимым и в формате haml
  4. Rspec тесты, вместо Test::Unit
  5. Factory Girl factories вместо стандартных fixtures

Читать дальше →

Резервное копирование Rails проектов без затей

Время на прочтение3 мин
Количество просмотров4.5K
Как известно, люди делятся на тех кто еще не делает резервных копий, тех кто уже делает, и тех кто уже делает и проверяет возможность восстановления

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

А делаем мы резервные копии через gem backup

Читать дальше →

Архитектура контроллеров: простые советы на каждый день

Время на прочтение6 мин
Количество просмотров3.9K
То, что контроллеры должны быть «худыми» знают все, но по мере наращивания функционала поддерживать чистоту контроллеров становится все сложнее и сложнее. Мы хотим предложить несколько рекомендаций как содержать свои контроллеры максимально чистыми без ущерба для качества кода.
Читать дальше →

Автодополнение команд Rails

Время на прочтение1 мин
Количество просмотров891

Работая с rails 3, я подумал, что было бы здорово иметь возможность дополнять команды rails в bash с помощью tab'a.
Погуглив, я нашёл плагин, который позволяет легко это сделать:
https://github.com/jweslley/rails_completion

Для установки нужно:


1. Скопировать содержимое файла rails.bash в ~/.rails.bash
2. Добавить в ~/.bashrc строчку:

source ~/.rails.bash


И можно наслаждаться)

PS.
Для работы необходим пакет bash_completion версии > 1.2
sudo apt-get install bash_completion

Railswizard — сервис быстрого создания rails-приложений

Время на прочтение1 мин
Количество просмотров1.1K
Собственно, railswizard.

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

Удобно и поучительно.

Как правильно считать чужие деньги

Время на прочтение3 мин
Количество просмотров2.4K
Для рельс уже написан миллион и один туториал про то, что делать, если вдруг приходится писать приложение, которое работает с деньгами.

Обычно все сводится к советам не использовать Float, использовать Decimal, транзакции там всякие и прочее. И в большей части случаев этих советов вполне достаточно для того, чтобы разработчик чувствовал себя сухо и комфортно.

А сталкивались ли вы с ситуацией, когда, скажем, приложение должно обслуживать жителей более чем одной страны?

Читать дальше →

Связка rvm + Rails + Nginx + Unicorn или деплоим рельсы правильно

Время на прочтение9 мин
Количество просмотров55K
Целью данной заметки я ставлю в подробностях описать организацию сервера для Rails приложений в самой популярной на данный момент связке: rvm + Rails + Nginx + Unicorn. К написанию статьи побудило отсутствие полной пошаговой документации по этой связке, понятной не только ядреным профессионалам этой области. Далее я попытаюсь подробно, шаг за шагом, описать идеологически правильный процесс организации сервера для обслуживания нескольких Rails приложений (на примере одного) — если у вас есть абсолютная уверенность в том, что на подопытной машине никогда не будет работать более одного приложения — настройка может быть существенно короче и проще. Хочу предупредить, что тонкости, касающиеся работы приложения под высокой нагрузкой в статье не описываются, т.к. цель ставилась иная — заставить работать приложение в связке и сократить количество конфликтов с другими приложениями до минимума.
Читать дальше →

Вклад авторов