Программирование на Ruby - Новости
Пять "скрытых" возможностей Rails 3.2
пт, 27/01/2012 - 13:08 — spine- "умный" content_tag_for,
- "умный" генератор миграций,
- гибкая обработка исключений,
- возможность управлять путями поиска паршалов,
- возвращение сообщений в логе о сработавших фильтрах.
Это были пять возможностей по версии Жозе Валима (José Valim), автора книги "".
Читайте о деталях эти возможностей в статье "". Кстати, рекомендую также смотреть комментарии к этой статье.
Rails 3.2.1
пт, 27/01/2012 - 13:00 — spineВышел Rails 3.2.0
пн, 23/01/2012 - 10:57 — spine
Тройное "Ура"! :) Новая версия Rails вышла 20 января.
Новое:
- значительно ускорилась работа в development-режиме,
- быстрее разбирается путь (route), благодаря новой ,
- возможность просмотреть план запроса, созданного ARel,
- возможность отмечать тегами записи лога,
- Active Record Store.
Читайте официальный пресс-релиз .
Рекомендации по обновлению до Rails 3.2.0 можно найти в ""
cucumber-notify gem
пт, 20/01/2012 - 18:51 — spine
Говорят, на Клондайке больше всех зарабатывали продавцы лопат, тазов и сит. Я подумал, и решил при здешней рубиновой жиле поделиться если не лопатами, то хотя бы отвертками собственного изготовления.
Сегодняшний нанотул -- гемчик для показывания посредством libnotify аутотест-нотификаций от Cucumber-а: . Гем собран из исходников от . Я долгое время пользовался исходным вариантом, пока мне не надоело всякий раз прикручивать биб-ку руками, и тогда я собрал гем.
Инструкции:
-
Ставим изделие:
$ gem install cucumber-notify -
испрашиваем его в своем .autotest:
require 'rubygems'
require 'cucumber-notify' -
Гоняем тесты и любуемся мордашкой.
Пока все, прошу любить и жаловаться!
Bundler: идея условий в Gemfile
пт, 20/01/2012 - 11:13 — spine
Интересная статья в блоге команды , разработчиков 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
Больше деталей в статье .
Кстати, высказать свое мнение и/или поддержать идею можно в комментариях к соответствующему тикету -
Официальный пресс-релиз технической конференции .тостер {ruby}
чт, 19/01/2012 - 11:28 — spine
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, использованию сторонних продуктов и платформ для быстрого и эффективного создания программных продуктов.
Контакты:
+7 (495) 628-27-04
Представлен Saint, инструмент для гипер-быстрого развёртывания полноценных бэкенд интерфейсов
чт, 19/01/2012 - 00:00 — spine
Основная цель Saint - максимально упростить управление контентом определённых табиц БД.
Saint позволяет создавать любые HTML поля на чистом Ruby, поддерживает любые типы ассоцирования таблиц, комплексные фильтры,
встроенный FileManager и другие "вкусности".
Вот например какой интерфейс можно построить ценной всего в 100(сто) строк кода:
А тут
Ниже приведён пример развёртывания админ интерфейса "в два клика".
Для этого понадобится Ruby 1.9.2 (или выше) и коннект к любому SQL серверу
из списка поддерживаемых -ом (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 построен на основе ,
так что создаём приложение, монтируем в неё Saint интерфейс и запускаем:
app = Presto::App.new
app.mount Page
app.run
Данный интерфейс является демонстративно тривиальным, и позволят лишь создавать / редактировать / удалять объекты лишь одной таблицы БД.
Но добавлять новые таблицы довольно просто и легко, так что можно довольно быстро построить интерфейс определённой сложности.
Благодарю за внимание.
gem-release - плагин для команды gem
пн, 16/01/2012 - 12:02 — spine
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 -
Confstruct - еще один способ задавать настройки
пн, 16/01/2012 - 11:28 — spine
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 в репозитории проекта -
FnordMetric - статистика событий приложения в реальном времени
ср, 28/12/2011 - 12:01 — spine
FnordMetric - позволяет отслеживать и отображать статистику любых событий в приложении.
События вы определяете сами и отправляете в формате JSON.
Отправлять события можно тремя способами: POST-запрос, потоком через TCP-соединение или напрямую записывая в очередь (хранится в Redis).
С помощью файла конфигурации, написанном на Ruby, вы сами определяете как вычислять и отображать статистику по каждому из событий.
Очень рекомендую прочитать и , чтобы получить полное представление о системе.
Для запуска FnordMetric вам потребуется Ruby 1.9.2 (и выше), Redis и EventMachine.
Исходный код FnordMetric открыт и доступен на GitHub -
PipeGems — упаковщик JS библиотек в джемы
пн, 26/12/2011 - 12:37 — spine
Саша Косс () начал интересный проект - упаковщик JS библиотек в джемы.
Цитата из его блога:
"В начале сентября вместе с новым
проектом на Rails 3.1 мне пришла в
голову идея. Идея о том, как немного
упростить жизнь front-end
разработчикам.
Одна из фич Assets Pipiline —
возможность держать ассеты в джемах.
Тем самым мы избавляемся от лишних
файлов в репо и решаем проблему
зависимостей, точно зная какая версия
JS библиотеки включена в приложение."
Исходный код PipeGems открыт и хранится на GitHub - .
Если во время грядущих праздников у вас есть свободное время и желание провести его с пользой, то можно помочь в работе на PipeGems.
Подробнее о проекте в статье
.тостер {ruby} + RubyFlow.ru + RubyJobs.ru = <3
пт, 23/12/2011 - 12:04 — spine
и стали информационными партнерами технической конференции .
.тостер {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 еще уточняется.
Участие в конференции платное, но для пользователей Хабрахабра предусмотрена скидка.
Все доклады на английском языке будут переводиться на русский.
Подробности можно найти на официальном сайте -
Configus - конфигурация вашего приложения
пт, 23/12/2011 - 11:24 — spine
Конфигуратор с лаконичным 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 => :production do
website_url 'http://text.example.com'
email do
smtp do
address 'smpt.text.example.com'
end
end
end
end
Примеры использования:
configus.website_url # => 'http://text.example.com'
configus.email.pop[:port] # => 110
configus.email.pop.port # => 110
Rails:
#config/initializers/configus.rb
Configus.build Rails.env do
# settigns
end
