Как включить ruby, чтобы увидеть tk в инструкции require tk? - PullRequest
1 голос
/ 21 июля 2009

Я начинаю изучать основы ruby ​​на моем iMac под управлением Leopard.

Версия, которая сейчас установлена ​​в моей системе, - ruby ​​1.8.6

.

Но я также самостоятельно установил (через MacPorts) ruby ​​1.9, потому что это соответствует последней книге "PickAxe".

Место установки ruby ​​1.8.6 находится в / usr / bin / ruby Место установки для ruby ​​1.9.1 находится в / opt / local / bin (устанавливается там, когда я использовал MacPorts)

Мой вопрос связан с сообщением об ошибке, связанным с требованием 'tk' в следующий довольно стандартный пример, который находится в файле HelloWorld.rb

require 'tk'
root = TkRoot.new { title "Hello world" }
TkLabel.new(root) do
    text 'Hello world!'
end
Tk.mainloop

Когда я вызываю команду ruby HelloWorld.rb Я получаю ожидаемые результаты; программа работает.

Однако, когда я вызываю команду ruby1.9 HelloWorld.rb Я получаю сообщение об ошибке

HelloWorld.rb: 1: in require': no such file to load -- tk (LoadError) from HelloWorld.rb:1:in '

Я искал в Интернете и в различных сообщениях, но пока не смог найти четкое объяснение того, что мне нужно сделать, чтобы ruby1.9 смог найти tk при использовании оператора require 'tk'.

Имеет ли это отношение к выполнению команды gem1.9 (которая также находится в / opt / local / bin)?

Я пытался вызвать sudo gem1.9 установить тк но это приводит к сообщению об ошибке ОШИБКА: не удалось найти gem tk локально или в хранилище

Любые предложения будут с благодарностью.

Ответы [ 2 ]

6 голосов
/ 26 июля 2009

Привязки TK для ruby ​​используют скомпилированный код (а не чистый ruby), поэтому для разных версий ruby ​​необходимы две установки.

Darwinports не собирает ruby ​​1.9 с поддержкой TK по умолчанию. Вам необходимо выбрать вариант tk или mactk ( см. Файл порта )

Прошло много времени с тех пор, как я использовал darwinports, но я думаю, что это был синтаксис:

port install ruby19 +mactk
1 голос
/ 21 июля 2009

Вам необходимо скомпилировать ruby, используя флаг with-tcltk-framework в вашем вызове ./configure. Полную информацию можно найти на странице TkDocs - Установка Tk . Первый раздел - Mac OS X, а затем часть с логотипом Ruby рядом с ним - именно то, что вам нужно.

Еще одна вещь, на которую стоит обратить внимание, это то, что веб-сайт рекомендует не использовать Ruby 1.9.x для Tk. Тем не менее, единственный способ узнать наверняка, сработает ли это, - попробовать сами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...