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

Пять "скрытых" возможностей 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

Небольшая заметка о работе с моделями

Поможет тем ребятам, кто только встает на рельсы. Хотя и зубры могут прочесть тоже.

В заметке рассказано:

  • Как использовать state_machine в моделях ActiveRecord
  • Как использовать counter_cache “с условиями”

http://torqueo.net/some-of-my-work/

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

gem-release - плагин для команды gem

gem-release добавляет четыре новых команды к gem - bootstrap, bump, tag и release.

bootstrap

  • создает файл спецификации [gem_name].gemspec
  • опционально может создать lib/[gem_name]/version.rb, README.md, и каталог test/, а также git-репозиторий и отправить его на GitHub.

bump увеличивает номер версии.

tag выполняет:

git tag -am "tag [tag_name]" [tag_name]
git push --tags origin

release

  • собирает gem-файл,
  • загружает gem-файл на rubygems.org, после чего удаляет этот файл,
  • опционально может выполнить команду tag

Примеры использования и описание дополнительных опций можно найти в README на GitHub - github.com/svenfuchs/gem-release

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

Confstruct - еще один способ задавать настройки

Confstruct позволяет задавать настройки приложения.

Пример с установками по умолчанию:

config = Confstruct::Configuration.new({
  :project => 'confstruct',
  :github => {
    :url => 'http://www.github.com/mbklein/confstruct',
    :branch => 'master'
  }
})

Далее тоже самое, но с помощью блока:

config = Confstruct::Configuration.new do
  project 'confstruct'
  github do
    url 'http://www.github.com/mbklein/confstruct'
    branch 'master'
  end
end

Получить доступ к этим значениям можно несколькими способами.

Структура

config.project = 'other-project'
config.github.url = 'http://www.github.com/somefork/other-project'
config.github.branch = 'pre-1.0'

Блок

config.configure do
  project 'other-project'
  github.url 'http://www.github.com/somefork/other-project'
  github.branch 'pre-1.0'
end

Хэш

config[:github][:url] = 'http://www.github.com/somefork/other-project'

Гибрид структуры и хэша

config.github[:url] = 'http://www.github.com/somefork/other-project'
config[:github].branch = 'pre-1.0'

Есть также возможности поиска по ключу (например, config.lookup!("github.url")) и временного изменения значения, с последующим возвращением исходного значения (например, для использования в тестах).

Для тех, кто заинтересовался советую прочитать README в репозитории проекта - github.com/mbklein/confstruct

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

FnordMetric - статистика событий приложения в реальном времени

FnordMetric - позволяет отслеживать и отображать статистику любых событий в приложении.

События вы определяете сами и отправляете в формате JSON.

Отправлять события можно тремя способами: POST-запрос, потоком через TCP-соединение или напрямую записывая в очередь (хранится в Redis).

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

Очень рекомендую прочитать README и посмотреть скринкаст с примером работы, чтобы получить полное представление о системе.

Для запуска FnordMetric вам потребуется Ruby 1.9.2 (и выше), Redis и EventMachine.

Исходный код FnordMetric открыт и доступен на GitHub - github.com/paulasmuth/fnordmetric

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

PipeGems — упаковщик JS библиотек в джемы

Саша Косс (@kossnocorp) начал интересный проект - упаковщик JS библиотек в джемы.

Цитата из его блога:

"В начале сентября вместе с новым
проектом на Rails 3.1 мне пришла в
голову идея. Идея о том, как немного
упростить жизнь front-end
разработчикам.

Одна из фич Assets Pipiline —
возможность держать ассеты в джемах.
Тем самым мы избавляемся от лишних
файлов в репо и решаем проблему
зависимостей, точно зная какая версия
JS библиотеки включена в приложение."

Исходный код PipeGems открыт и хранится на GitHub - github.com/kossnocorp/pipegems.

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

Подробнее о проекте в статье "PipeGems — упаковщик JS библиотек в джемы"

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

.тостер {ruby} + RubyFlow.ru + RubyJobs.ru = <3

RubyFlow.ru и RubyJobs.ru стали информационными партнерами технической конференции .тостер {ruby}.

.тостер {ruby} пройдет 10 февраля в Москве. Планируются следующие доклады:

  • Deciphering Rails 3, Грегг Поллак (Орландо, Флорида), Envy Labs,
  • Understanding the Rails web model and scalability options, Фабио Акита (Бразилия), Codeminer 42,
  • Travis CI. Splitting your app into smaller pieces, Джош Калдеримис, Travis CI,
  • История Sinatra, Blake Mizerany, Heroku,
  • Практика применения JRuby, Тимофей Клименко, Hot Spot,
  • Как мы делали Groupon, Иван Евтухович, Evil Martians,
  • тема доклада от Скотта Чакона (Scott Chacon), Github еще уточняется.

Участие в конференции платное, но для пользователей Хабрахабра предусмотрена скидка.

Все доклады на английском языке будут переводиться на русский.

Подробности можно найти на официальном сайте - toster.ru

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

Configus - конфигурация вашего приложения

Конфигуратор с лаконичным dsl и поддержкой наследования для разных сред разработки.

Установка:

gem install configus

Определение:

Configus.build :development do # set current environment
  env :production do
    website_url 'http://example.com'
    email do
      pop do
        address 'pop.example.com'
        port    110
      end
      smtp do
        address 'smtp.example.com'
        port    25
      end
    end
  end

  env :development, :parent =&gt; :production do
    website_url 'http://text.example.com'
    email do
      smtp do
        address 'smpt.text.example.com'
      end
    end
  end
end

Примеры использования:

configus.website_url # =&gt; 'http://text.example.com'
configus.email.pop[:port] # =&gt; 110
configus.email.pop.port # =&gt; 110

Rails:

#config/initializers/configus.rb
Configus.build Rails.env do
  # settigns
end

Репозиторий: https://github.com/kaize/configus

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

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

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

Новые пользователи