Программирование на Ruby - Новости

Service Layer в Rails приложениях

Jared Carroll описывает назначения паттерна, приводит классификацию сервисов и примеры использования.

По сути эта статья является выдержкой из книги Эрика Эванса Предметно-ориентированное проектирование (DDD).

http://blog.carbonfive.com/2012/01/10/does-my-rails-app-need-a-service-layer/

Источник: rubyflow.ru

Где хранить сложную логику?

Как часто у вас возникало ощущение, что не понимаешь куда "разместить" сложную бизнес-логику?
В контроллер? Может в модель, потому что контроллер должен быть "skinny"?

Эрик Смит (Eric Smith) из 8th Light имеет свое, на мой взгляд отличное, решение этого вопроса. В статье он не только показывает как просто пойти ложным путем при усложнении логики, но и дает рекомендации по исправлению ситуации.

Читайте "Mind Your Own Business Rails"

Источник: rubyflow.ru

imperavi-rails - это mountable engine для rails 3.1+, который добавляет редактор Imperavi в приложение

Всем привет! Все наверное видели отличненький визуальный редактор Imperavi от компании Imperavi? :) Если нет, то можно посмотреть здесь http://imperavi.com/redactor/

Так вот, я организовал репозиторий и пытаюсь сделать этот редактор удобным для использования в Rails. Первая ласточка уже есть: https://github.com/tanraya/imperavi-rails

Нужно некоторые вещи довести до ума, написать тесты и прочее. Но - оно уже работает. Можно с осторожностью пользоваться.

Кто заинтересовался и кому надоело прикручивание tinymce и прочих редакторов в свои приложения - добро пожаловать в проект, становитесь контрибуторами, предлагайте идеи, устанавливайте редактор в свои приложения и просто делитесь мнениями.

Я открыт для предложений и обсуждения.

Источник: rubyflow.ru

ClientSit - ошибки в JS

Прототип сервиса для трэкинга клиентских ошибок в JS, зарегистрироваться и получить код для вставки можно тут - http://clientsit.heroku.com/

можно поднять и свой трэкер.

но прежде читаем README на гитхабе для понимания
https://github.com/homakov/ClientSit
жду ваших пул риквестов )

Источник: rubyflow.ru

Ruby Hero Awards 2012

Открыто голосование за тех, кто достоин звания Ruby Hero. Назвать своего кандидата можно на сайте rubyheroes.com

Я отдал свой голос за Питера Купера (Peter Cooper). А вы?

Источник: rubyflow.ru

Как правильно скачивать большие файлы с помощью Ruby?

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

В коде это выглядит так:

Net::HTTP.start("someurl_without_the_protocol.com") do |http|
  begin
    file = open("/path/to/file.mov", 'wb')
    http.request_get('/' + URI.encode("file.mov")) do |response|
      response.read_body do |segment|
        file.write(segment)
      end
    end
  ensure
    file.close
  end
end

Пример кода и совет из статьи "Large Ruby File Downloads Done Right!"

Источник: rubyflow.ru

Ruby on Rails Google+

Новости фреймворка, технологий связанных с Ruby on Rails и обзор гемов на странице I18n.locale = :ru

Источник: rubyflow.ru

Пять "скрытых" возможностей Rails 3.2

  • "умный" content_tag_for,
  • "умный" генератор миграций,
  • гибкая обработка исключений,
  • возможность управлять путями поиска паршалов,
  • возвращение сообщений в логе о сработавших фильтрах.

Это были пять возможностей по версии Жозе Валима (José Valim), автора книги "Crafting Rails Applications".

Читайте о деталях эти возможностей в статье "My five favorite “hidden” features in Rails 3.2". Кстати, рекомендую также смотреть комментарии к этой статье.

Источник: rubyflow.ru

Rails 3.2.1

Релиз устраняет регрессию и исправляет ошибки в документации. Детали..

Источник: rubyflow.ru

Вышел Rails 3.2.0

Тройное "Ура"! :) Новая версия Rails вышла 20 января.

Новое:

  • значительно ускорилась работа в development-режиме,
  • быстрее разбирается путь (route), благодаря новой Journey engine,
  • возможность просмотреть план запроса, созданного ARel,
  • возможность отмечать тегами записи лога,
  • Active Record Store.

Читайте официальный пресс-релиз "Rails 3.2.0: Faster dev mode & routing, explain queries, tagged logger, store".

Рекомендации по обновлению до Rails 3.2.0 можно найти в "Ruby on Rails 3.2 Release Notes"

Источник: rubyflow.ru

T For Translate

Немного сахара для I18n трансляций. Позволяет использовать T.key1.key2 вместо t('key1.key2') что, я полагаю, выглядит намного наглядней. Плюс кое какие фишки по типу логики - читайте README на гитхабе.
https://github.com/homakov/T-For-Translate
Это лишь прототип, ваши мнения?

Источник: rubyflow.ru

cucumber-notify gem

Говорят, на Клондайке больше всех зарабатывали продавцы лопат, тазов и сит. Я подумал, и решил при здешней рубиновой жиле поделиться если не лопатами, то хотя бы отвертками собственного изготовления.

Сегодняшний нанотул -- гемчик для показывания посредством libnotify аутотест-нотификаций от Cucumber-а: cucumber-notify. Гем собран из исходников библиотечки от Matt Buck. Я долгое время пользовался исходным вариантом, пока мне не надоело всякий раз прикручивать биб-ку руками, и тогда я собрал гем.

Инструкции:

  1. Ставим изделие:

    $ gem install cucumber-notify
  2. испрашиваем его в своем .autotest:

    require 'rubygems'
     require 'cucumber-notify'
  3. Гоняем тесты и любуемся мордашкой.

Пока все, прошу любить и жаловаться!

Источник: rubyflow.ru

Bundler: идея условий в Gemfile

Интересная статья в блоге команды Phusion, разработчиков Phusion Passenger. Рассуждения об идее добавления условий в Gemfile.

Как иллюстрация идеи:

condition :driver => 'sqlite' do
  gem 'sqlite3'
end

condition :driver => 'mysql' do
  gem 'mysql'
end

condition :driver => 'postgresql' do
  gem 'pg'
end

condition :driver => ['mysql', 'sqlite'] do
  gem 'foobar'
end

А дальше установить драйвер, например, MySQL можно так:

bundle install --condition driver=mysql

Больше деталей в статье Bundler and public applications.

Кстати, высказать свое мнение и/или поддержать идею можно в комментариях к соответствующему тикету - github.com/carlhuda/bundler/issues/1636

Источник: rubyflow.ru

Скидка при покупке билета на .тостер {ruby}

Компания “Тематические Медиа” делает специальное предложение для читателей и авторов RubyFlow.ru и RubyJobs.ru.

При покупке билета на техническую конференцию .тостер {ruby}, вы получите скидку в 10%, если используете промо-код - rubyflow

Поделитесь кодом с друзьями :) Встретимся на конференции!

Источник: rubyflow.ru

Официальный пресс-релиз технической конференции .тостер {ruby}

10 февраля 2012 года компания “Тематические Медиа” проведет очередную конференцию .тостер, первую в 2012 году, посвященную программированию на языке Ruby и использованию фреймворка Ruby on Rails.

Среди выступающих на конференции ведущие Ruby и Ruby on Rails специалисты из США, Южной Америки, Европы и России, занимающиеся непосредственной разработкой ПО и созданием высоконагруженных приложений и сервисов.

Перед участниками конференции выступят: CIO GitHub Скотт Шакон, со-основатель Codeminers42 и евангелист Ruby в Бразилии Фабио Акита, Грегг Поллак из EnvyLabs, известный своими подкастами и скринкастами, ведущий разработчик Travis CI Джош Калдеримис, автор Sinatra и евангелист Heroku Блейк Мизерани, а так же Джонатан Лейтон, независимый разработчик и член Rails Core Team. Кроме них в программе и два русских докладчика: Тимофей Клименко из компании Hot Spot и Иван Евтухович из Evil Martians.

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

Контакты:
toster@thematicmedia.ru
+7 (495) 628-27-04

Источник: rubyflow.ru

Представлен Saint, инструмент для гипер-быстрого развёртывания полноценных бэкенд интерфейсов

Основная цель Saint - максимально упростить управление контентом определённых табиц БД.

Saint позволяет создавать любые HTML поля на чистом Ruby, поддерживает любые типы ассоцирования таблиц, комплексные фильтры,
встроенный FileManager и другие "вкусности".

Вот например какой интерфейс можно построить ценной всего в 100(сто) строк кода:
Демо на официальном сайте

А тут краткий вводный туториал

Ниже приведён пример развёртывания админ интерфейса "в два клика".

Для этого понадобится Ruby 1.9.2 (или выше) и коннект к любому SQL серверу
из списка поддерживаемых DataMapper-ом (MySQL, Sqlite, Postgresql etc).

Для начала устанавливаем Saint:

$ sudo gem install saint

Потом создаём модель(на данный момент Saint поддерживает только DataMapper ORM):

class PageModel
    include DataMapper::Resource
    property :id, Serial
    property :name, String
end

Дальше, создаём интерфейс:

class Page
    include Saint::Api
    http.map :pages
    saint.model PageModel
    saint.column :name
end

Теперь надо лишь запустить приложение.
Стоит отметить что Saint построен на основе Presto фраймворк,
так что создаём приложение, монтируем в неё Saint интерфейс и запускаем:

app = Presto::App.new
app.mount Page
app.run

Данный интерфейс является демонстративно тривиальным, и позволят лишь создавать / редактировать / удалять объекты лишь одной таблицы БД.

Но добавлять новые таблицы довольно просто и легко, так что можно довольно быстро построить интерфейс определённой сложности.

Благодарю за внимание.

Источник: rubyflow.ru

Вход для пользователей

Не подтвержденные новости