Обновить
8K+

Ruby *

Динамический высокоуровневый язык программирования

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

Делаем gem для RubyGems

Время на прочтение3 мин
Охват и читатели2.9K

Собираем камешки для Ruby


Зачастую бывает так, что таскаешь из проекта в проект какие-то куски кода. Такие куски очень удобно выносить во внешние файлы, модули. Для этого в Ruby существует RubyGems — менеджер приложений и библиотек, оформленных в один файл-пакет — gem. И собрать такой гем, а главное, сделать его доступным для любой машины, подключенной к интернету, оказалось очень просто.

Итак, gem за пол-часа

Мини-конференция по ruby и rails в Москве

Время на прочтение1 мин
Охват и читатели614
Привет, хабрачеловек!

Мы организовали небольшую конференцию про ruby и ruby on rails в Москве, в клубе «Гоголь», 19-го апреля в три часа дня.
Вот чего интересного в ней будет:
  • Несколько коротких презентаций и докладов по 5-15 минут.
  • Общение с коллегами.
  • Хороший кофе и вкусные сандвичи: р

Из технического сопровождения будет экран и проектор, постараемся организовать и скайп-каст для тех, кто не сможет присутствовать.
Если ты хочешь прийти — пожалуйста, напиши об этом в комментариях, чтобы мы могли внести последние правки и все точно рассчитать.

Мы ждем тебя, %username%!

Пишем SQL на чистом Ruby

Время на прочтение2 мин
Охват и читатели5.5K
Ruby — это гибкий язык, позволяющий создавать на своей основе различные DSL. Появилась идея написать DSL для SQL-запросов (для SELECT'ов), максимально приближенный к оригиналу. Кажется, получилось. Получившаяся штука называется Boroda. Далее следуют примеры кода.

require 'boroda'

sql = Boroda.build do
  from :posts, :users
  select posts.*
  where (posts.author_id == users.id) & (users.name == 'Vlad Semenov')
end

Получим:

SELECT posts.*
FROM posts, users
WHERE (posts.author_id = users.id) AND (users.name = 'Vlad Semenov')


Если кто не понял — мы пишем SQL-запросы на чистом Руби. Теперь попробуем что-нибудь посложнее.
Читать дальше →

MountainWest RubyConf 2009

Время на прочтение5 мин
Охват и читатели551
13 и 14 марта этого года в штате Юта прошла очередная конференция посвященная языку программирования Ruby.

Я заметил, что на этой конференции более короткие доклады по сравнению с предидущими конференциями. Докладчики, восновном, вкладывались в 25-30 минут, в то время как в ноябре прошлого года на RubyConf 2008 им было нужно около часа на каждое выступление.
Кстати, с удивлением заметил фирму Microsoft среди спонсоров конференции. Несмотря, на полуживой IronRuby как-то у меня не ассоциируется эта организация с open-source сообществом вообще и R*-сообществами в частности.

Интересно будет, восновном, рубистам и рельсовикам. Некоторые доклады могут быть интересны Java-программистам желающим мигрировать в сторону Ruby/Rails.

Лично мне понравились, и поэтому рекомендую, следующие доклады: The Great Rails Refactor и BDD with Cucumber.

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

Method Finder для Ruby по мотивом Squeak'овского

Время на прочтение2 мин
Охват и читатели807
После поста пользователя aovoe захотелось что-то аналогичное для ruby. Наспех был накидан код, который умеет искать по селекторам без аргументов (например «hello».upcase).
Примеры:

  irb(main):001:0> "hello".suggest_method("HELLO")
  => ["upcase", "swapcase"]
  
  irb(main):002:0> "hello".suggest_method("Hello")
  => "capitalize"
  
  irb(main):007:0> Date.parse('13 Sep 2009').suggest_method(256) # Programmer's Day
  => "yday"
  
  irb(main):009:0> 1.01.suggest_method(1)
  => ["prec_i", "round", "truncate", "to_i", "to_int", "floor"]
  
  irb(main):010:0> 1.01.suggest_method(2)
  => "ceil"

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

Встреча в Питере: Воскресенье, 29 Марта

Время на прочтение1 мин
Охват и читатели644
После встречи питерских программистов в iClub-е возникла идея провести отдельную встречу руби-прогеров.
Чтобы избавить всех от прелестей бесконечных обсуждений где и когда, я забил место и время. И я подумал, что для разнообразия будет круто провести встречу утром в Воскресенье, хаха.

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

Ruby — проксирование методов класса

Время на прочтение4 мин
Охват и читатели3.9K
Иногда возникает необходимость, запроксировать (обернуть) методы класса в свой код.

Например:
  • запустить их в тредах
  • навесить фильтры до и после
  • померить производительность

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

Ruby — async_fu, простота использования тредов

Время на прочтение2 мин
Охват и читатели1.1K
Я не очень давно работаю с ruby но почти в первые дни появилась острая нужда запускать долго играющие функции, которые не должны блокировать работу основной программы.

Готового и простого решения я не нашел, посему начал изобретать велосипед.

На данный момент библиотека позволяет:
  • организовывать асинхронные вызовы методов вашего класса
  • гарантирует выполнение всех потоков перед выходом из программы

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

Краткий обзор развития фреймворка Ruby on Rails за последние 14 месяцев

Время на прочтение12 мин
Охват и читатели1.3K
За временем не успеть. Все вокруг развивается очень стремительно. В какой-то момент я заметил, что хоть и работаю с последней версией Ruby on Rails, но многих «фич», которые в ней реализованы я не использую, более того о многих я даже не слышал.
Я попробую сделать ретроспективу, что было введено в Rails за последние 14 месяцев. Каждое нововведение буду сопрождать небольшим примером, который буду копировать as is из источника, на котором основана статья, так как подобные пояснения для каждой это тема для кучи отдельных статей или ссылкой.
поехали

Авторизация в Ruby on Rails с помощью плагина restful-authentication

Время на прочтение6 мин
Охват и читатели7.6K
Сидя в Москве (как тут у вас многолюдно :), нашел время на написание серии статей по Rails.
Сегодняшняя тема навеяна печальным сообщением. Итак моя задача: показать как можно легко сделать авторизацию в Ruby on Rails. Задача новичков прочитать и попробовать, задача не новичков прочитать и написать как сделать лучше и/или указать на ошибки.
поехали

Индикатор загрузки файлов в веб-приложениях на Ruby on Rails

Время на прочтение5 мин
Охват и читатели2.9K
Задача: показать как реализовать индикатор загрузки файла при различных конфигурациях Ruby on Rails:
Я разделю цикл статей на три части.
mongrel
mongrel(s)+nginx
mod_rails
часть I. mongrel

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

acts_as_conference 2009

Время на прочтение4 мин
Охват и читатели513
6 и 7 февраля в штате Флорида прошла очередная конференция посвященная Ruby и Rails. На сайте который специализируется на публикации видео с конференций связанных с Ruby были выложены записи выступлений.

Выступления на английском языке.

О каждом докладе я выкладываю краткую информацию: название, длительность, краткое описание и url. Прочитав этот RSS-образный набор данных вы сможете понять интересен ли доклад для вас или стоит просмтореть что-то другое.

Кому это может быть интересно? Это может прозвучать странно, но самые интересные, на мой взгляд, доклады достаточно универсальны. Они затрагивают темы которые будут интересны людям независимо от того, какой язык программирования они используют. Разумеется, со знанием Ruby будет легче понять примеры, но идеи которые излагаются могут использоваться в разных языках. Два доклада на которых хотелось бы заострить внимание — The Grand Unified Theory… и Relaxing with CouchDB

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

Доступ к документации по Ruby 1.9 из OS X Dictionary и Spotlight

Время на прочтение1 мин
Охват и читатели886
Priit Haamer эстонский Ruby разработчик опубликовал документацию по Ruby 1.9 в формате словаря для приложения Dictionary. С этой странички можно скачать Ruby dictionary. В таком же формате доступна документация по Ruby on Rails

Установка


Распакуйте zip в папку ~/Library/Dictionaries если хотите поставить словари только для себя. Возможно эту папку придется создать. Если хотите поставить словари для всех, то распакуйте их в папку /Library/Dictionaries.
Для того чтобы работал поиск по этим словарям из Spotlight откройте настройки Dictionary.app и перетяните необходимый словарь вверх потому что Spotlight ищет только по первому словарю из списка.

4. Metaprogramming patterns. 19 кю. Спасение утопающих дело рук самих утопающих

Время на прочтение12 мин
Охват и читатели3.1K
Предположим, что у вас есть библиотечный метод, который иногда кидает ексепшены.
Этот метод библиотечный в том смысле, что вы не хотите трогать руками тот файл, где он определён, так как этот файл, например, относится к библиотеке, которая регулярно обновляется, и ваши изменения после каждого обновления будут теряться, если вы специально не позаботитесь о их сохранении.
Такие методы принято менять в своем собственном коде — в динамических языках можно прямо в своем коде переписать избранный метод избранного класса.
Читать дальше →

Вышел релиз Ruby 1.9.1

Время на прочтение1 мин
Охват и читатели662
image
Спешу поделиться со всеми пользователями Хабра хорошей новостью! Вышел Ruby 1.9.1
Обещают что он в несколько раз быстрее 1.8.7 что есть просто отлично…
Найти исходники можно на официальном сайте. К сожалению пока только исходники. Ну и ладно.
Список изменений и отличий от 1.8.7
Список профикшеных багов от 1.9.1 RC2
Bzip архив
Gzip архив
PS
Rails запускаются
image

3. Metaprogramming patterns — 20 кю. Замыкания

Время на прочтение7 мин
Охват и читатели6.2K
В предыдущем посте мы затронули важнейшую концепцию — замыкание (closure).
Суть этой концепции в том, что в любой блок как бы заключается «весь окружающий мир» так, как он виден в контексте, где блок создается. Правильнее сказать, что в блок заключается не весь окружающий мир (пространство имён), а фиксируется точка зрения на окружающий мир (пространство имён).
Читать дальше →

Запуск Ruby on Rails приложений на shared-хостинге на примере баг/таймтрекера Redmine

Время на прочтение2 мин
Охват и читатели6.2K
Для своего нового проекта я как раз сейчас устанавливаю рабочее окружение, и ключевое место в нем занимает баг/таймтрекер+wiki. Платные реализации извесны (тот же Basecamp, Fogbugs, updatelog.com), но хотелось найти что-то что хостится на моём сервере. Из извесного и хорошо работающего — это Bugzilla (с очень скромным функционалом), Trac(есть все, но только 1 проект), и вот только что наткнулся на «новый» проект (около 3-х лет ему) — Redmine. Практически аналог вышеупомянутых платных сервисов, но бесплатный. Проблема для меня в том, что он написан на Ruby On Rails, и как оказалось деплоймент ROR приложений может быть не слишком простым (по крайней мере для таких новичков в этом деле как я). Так как хостинг не специализируется на Ruby, Passenger-а нету. В конечном итоге оказалось что это все не так уж и сложно :-)

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