Особенности Ruby
Язык Ruby был задуман японским программистом Yukihiro Matsumoto в 1993 году как результат синтеза всех лучших черт языков программирования с целью максимально упростить создание программ. Результат синтеза в идеях языка изложен в документации по Ruby. Ниже представлены наиболее важные из них:
Это интерпретируемый язык. В простейшем случае это означает, что стадия компиляции для него отсутствует. Это сокращает время, необходимое для создания программы.
В Ruby переменная может хранить любой объект - можно сказать, что Ruby безтиповый язык, как PHP или Perl.
Определять переменные не нужно. Для задания области видимости переменной используются приставки. Например $myVar - это глобальная переменная, а myVar - локальная.
Garbage Collector освобождает от управления памятью. Объекты, на которыре не существует ссылок, автоматически выгружаются из памяти.
Примитивные типы отсутствуют - любое значение является объектом.
Поддержка основных концепций ООП.
Чрезвычайно гибкая система итераторов.
Части кода представлены как объекты
Поддержка регулярных выражений и сходные с Perl методы работы с ними.
В Ruby нет разделения на Integer, Long, Byte. Для целочисленных типов есть только один тип, в рамках которого можно проводить вычисления с произвольным количеством разрядов.
Механизмы перехвата исключений (как в Java).
Другие особенности, которые мне особо понравились:
Поддержка потоков
Все операторы возвращают значения, в том числе управляющие структуры (if, case)
return в конце функции не обязателен, возвращается значение последнего оператора. Например:
def myFunction(a, b)
a + b
end
puts myFunction(1, 2)
напечатает 3.
Условия and и or возвращают элемент, эквивалентный true или первый элемент Например:
puts 5 or 10 > 5
puts 10 or nil > 10
puts nil or 7 > 7
puts nil and 10 > nil
Внимание программистам на C и производных: пустая строка и ноль не расцениваются как false. false - это только nil (null).
Установка Ruby Gentoo Linux
Если у вас Gentoo Linux, то Ruby уже, скорее всего, будет установлен. Если же нет, то это досадное недоразумение исправляется очень легко.
$ emerge ruby
Далее можно переходить к установке дополнительных модулей или к первым программам на Ruby.
Установка дополнительных пакетов
Для Ruby есть большое количество различных библиотек и расширений. Доступные в Gentoo Linux можно посмотреть с помощью
$ emerge -s ruby
Кстати, если вы регулярно обновляете Portage, то, возможно, mod_ruby можно уже установить через "emerge mod_ruby". В моей версии его статус еще Masked.
mod_ruby
modruby.net - сайт Apache модуля mod_ruby. Установка крайне проста:
$ tar -xzf mod_ruby-1.0.7.tar.gz
$ cd mod_ruby-1.0.7
$ ./configure.rb --with-apxs=/path/to/apxs
$ make
$ make install
Затем редактируем файл настроек apache (httpd.conf или apache.conf) и добавляем в него следующее:
# загрузка модуля mod_ruby
LoadModule ruby_module /usr/lib/apache/mod_ruby.so
AddModule mod_ruby.c
# Настройка обработчиков для файлов *.rbx
<IfModule mod_ruby.c>
RubyRequire apache/ruby-run
<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
Options +ExecCGI
</Location>
<Files *.rbx>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
Options +ExecCGI
</Files>
</IfModule>
Примечание: это немного расходится с примером, указанным в документации, но именно так у меня получилось запустить Ruby скрипты.
Для тестирования создайте в директории public_html файл hello.rbx вида
puts "Hello!"
Обращаемся к нему по ссылке (у вас может быть другая ссылка) "http://localhost/~alex/hello.rbx". Если отработало, значит все получилось. Если нет, обращайтесь, поможем, чем сможем.
Установка книги "Programming Ruby: The Pragmatic Programmers' Guide"
Авторы: Dave Thomas и Andrew Hunt
$ emerge dev-ruby/programming-ruby
Примечание: новая редакция книги находится на сайте phrogz.net
MySQL расширение для Ruby
$ emerge dev-ruby/mysql-ruby