Оглавление | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11

Официальный FAQ по Ruby

If you wish to report errors or suggest improvements for this FAQ, please go to our GitHub repository and open an issue or pull request.

Библиотека расширений

Как я могу использовать Ruby интерактивно?

This section or parts of it might be out-dated or in need of confirmation.

Вы можете попробовать использовать irb. Ниже приведено переложение текста Kentaro Goto (Gotoken), который изначально появился в [ruby-talk:444].

  1. Получите последний тарбол irb из директории contrib в архиве Ruby.
  2. Распакуйте дерево директорий irb.
  3. Добавьте путь к директории irb/ в переменную окружения $RUBYLIB.
  4. Создайте символическую ссылку из $RUBYLIB/irb/irb.rb на файл с именем irb где-нибудь в вашем пути PATH.
  5. chmod +x $RUBYLIB/irb/irb.rb
  6. Возможно, используйте rehash, чтобы сообщить вашей оболочке о новой команде.
  7. Введите irb.

Если модуль расширения readline работает с вашим интерпретатором, это сделает использование irb гораздо приятнее.

В директории samples/ дистрибутива Ruby также есть простая программа eval. Она позволяет вводить выражения и просматривать их значения. Вы можете скопировать eval в директорию site_ruby в дереве Ruby, а затем вызывать её с помощью:

ruby -r eval -e0

Есть ли отладчик для Ruby?

Для Ruby существует gdb-подобный отладчик.

ruby -r debug your_program

Как я могу использовать библиотеку, написанную на C, из Ruby?

Из всех скриптовых языков Ruby, вероятно, проще всего расширять. Здесь нет проблем с подсчетом ссылок и типами переменных, и нужно изучить совсем немного интерфейсов. На самом деле код на C, используемый для расширения Ruby, часто в итоге выглядит удивительно похожим на сам код Ruby.

Сначала прочитайте файл doc/extension.rdoc в исходниках Ruby или прочитайте extension.rdoc на docs.ruby-lang.org. Это отличный документ не только если вы пишете библиотеку расширения, но и если вы хотите глубже понять Ruby.

Затем сайт RubyGems предоставляет руководство по созданию гемов с расширениями. В нем показано, как настроить гем с расширениями на C, которые собираются во время установки. Там также есть ссылки на некоторые существующие гемы, которые оборачивают библиотеки на C, и материалы для дальнейшего чтения.

Вы также можете взглянуть на исходный код самого интерпретатора и на различные поставляемые расширения в директории ext/ (вы можете просмотреть репозиторий Ruby на GitHub).

Могу ли я использовать Tcl/Tk в Ruby?

This section or parts of it might be out-dated or in need of confirmation.

В стандартный дистрибутив включены два интерфейса к Tcl/Tk. Один находится в ext/tcltk/ и загружается с помощью require "tcltk". Синтаксис очень близок к синтаксису Tcl, который передается интерпретатору Tcl. К сожалению, описание этой библиотеки написано на японском языке.

Другой находится в ext/tk/ и загружается с помощью require "tk". Его синтаксис ближе к стилю интерфейса Tk, предоставляемого интерфейсами Perl и Python.

Tk не работает. Почему?

This section or parts of it might be out-dated or in need of confirmation.

Ваша версия Tk может быть старой, попробуйте более новую версию.

Могу ли я использовать интерфейсы gtk+ или xforms в Ruby?

This section or parts of it might be out-dated or in need of confirmation.

Вы найдете ruby-gtk-x.xx.tar.gz и ruby-forms-x.x.tar.gz в директории contrib/ на ftp-сайтах Ruby.

Как я могу выполнять арифметические операции с датами?

This section or parts of it might be out-dated or in need of confirmation.

Объект Time может выражать только даты между 1 января 1970 года и 19 января 2038 года.

Предоставляются два стандартных модуля библиотеки расширений: require "date", который прост и использует английский календарь, и require "date2", который более универсален.

Также смотрите sample/cal.rb.