войти зарегистрироваться

RubyЗнакомство с Gem. Часть вторая

Доброго времени суток!

Вместо введения


Наконец-то я нашёл немного времени для того, чтобы продолжить своё повествование о разнообразных чудесах в Ruby. Как вы помните, в прошлой части мы познакомились с основами написания своего гема. Мы узнали, какой минимальный набор файлов должен быть для того, чтобы его собрать. Также мы узнали как мы можем опубликовать своё творение в RubyGems. В тот же день (после написания первой части) в RubyGems неожиданно проявился всплеск гемов под названием hello-world. Причём я застал довольно много вариаций оного. Некоторые даже не удосужились поменять строку, где указывается автор гема.
g.author = "krovatti"

Некоторые вовсе задавали гему следующие значения версий:
g.version = "666"
g.version = "111"
g.version = "911"

В общем было достаточно много других вариаций, что меня, как автора, безусловно, не могло не радовать.

RubyЗнакомство с Gem. Часть первая

Доброго времени суток!

Введение


Каждый рубист, да и вообще программист, рано или поздно начинает задумываться о написании своих библиотек. Ему начинает надоедать перетаскивание одних и тех же кусков кода в другие проекты. В Ruby лекарством от данного заболевания являются gem'ы. Итак, давайте познакомимся с ним поближе.

Ruby on RailsInboxes: личные сообщения в Rails-приложении



Одна из тривиальных задач для RoR-разработчика: реализовать функционал “инбоксов”, или личных сообщений. Решать эту задачу приходиться чуть ли не на каждом из проектов, поэтому столкнувшись с этим в очередной раз я принял решение создать удобный компонент мессенджера для приложения на Rails 3.1, который в дальнейшем можно будет легко и удобно подключать к любому приложению.
Представляю gem Inboxes.

Возможности:
  • подсчет непрочитанных переписок
  • ведение личных и групповых дискуссий
  • создание групповых переписок с любыми пользователями
  • управление участниками групповых переписок
  • полная поддержка асинхронной работы: новые сообщения будут приходить мгновенно, как в обычном IM-клиенте

Для авторизации и идентификации пользователей gem интегрируется с Devise, для проверки прав — с CanCan.

RubyПишем свой первый gem из песочницы

Хочу рассказать Вам свой опыт написания gem. Данная идея возникала у меня давно, но до реализации все никак не доходила. Все упиралась в банальную лень и отсутствие достаточной мотивации. Однако неделю назад мне достался проект, связанный с сервером рассылки писем.

Выбираем генератор

На первом этапе нужно было определиться с тем, как будет создаваться библиотека: с нуля или с помощью какого-то генератора. Для первого раза, на мой взгляд, писать с нуля будет достаточно сложно и долго, поэтому рассмотрим известные генераторы. Небольшой поиск показал такие gems: hoe, newgem, bundler. Лично мне понравились два – newgem и bundler. Первый представляет полный комплект шаблонов, охватывающий множество случаев. Но я выбрал bundler за его простоту, минимальный набор сгенерированных файлов и набор rake tasks для создания пакета и его дальнейшей публикации.

RubyRubyGems — подробно


Для начала определимся с понятиями:
RubyGems — фрэймворк для установки и запаковки Ruby библиотек и приложений.
gem — пакет(файл) с библиотекой или приложением. Имеет стандартизированный вид и расположен в хранилище в сети.
gem command tool — RubyGems предоставляет утилиту «gem» для работы с gem пакетами из командной строки. Она интегрирована с Ruby и позволяет получать доступ к установленным gem'ам как к библиотекам.

В чем же предназначение RubyGems?

До того как появилась RubyGems, для установки новой библиотеки нужно было найти, скачать её, попытаться установить, часто лишь для того, чтобы убедиться в отсутствии нужных зависимостей. Если же библиотека запакована с помощью RubyGems, достаточно попросить RubyGems сделать это за нас и получить установленную, интегрированную библиотеку со всеми нужными зависимостями. В дополнение ко всему утилита gem — платформонезависима, неважно какую ОС вы используете, везде механизм установки библиотек и приложений будет одинаков. Здорово, правда?

Под катом будут описаны:
1) Поиск, получение деталей, установка gem's
2) Доступ документации по установленному gem
3) Использование установленных gem's
4) Работа с версиями gem's
5) Создание собственных gem's

RubyGeoIP

GeoIP позволяет реализовать поиск информации о стране, городе по IP адресу или хосту.

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

Областей применения довольно много.

Rubytweet-button

tweet-button — gem/plugin для генерации новой Twitter кнопки.

Использование

Включите TweetButton в вашем application хелпере. После этого в любом шаблоне можно вызвать хелпер:

<%= tweet_button %>

Поддерживаются так же дополнительные параметры:

<%= tweet_button(:via => «peterc», :url => «hashtrain.com», :text => «AWESOME.») %>

Исходный код и документация доступны на Github: http://github.com/intridea/tweet-button

Rubyrails_best_practices

rails_best_practices это GEM, для проверки качества кода рельсового приложения в соответствии с презентацией ihower в Rails Best Practices от Kungfu RailsConf.

Исходный код на GitHub: http://github.com/flyerhzm/rails_best_practices

До:
image

Персональные блоги Сборка Ruby, RubyGems и Ruby on Rails в новом Snow Leopard

Это инструкции по сборке и установке 64-битной версии Ruby, Rubygems и Ruby on Rails в новой Mac OS X 10.6 Snow Leopard.

Плюсы собственной сборки Руби в /usr/local описаны тут и здесь.