如何在require tk语句中启用ruby来查看tk?

Ric*_*uhr 1 ruby macos tk-toolkit

我开始在运行Leopard的iMac上学习ruby的基础知识.

现在我系统上的版本是ruby 1.8.6

但是,我也独立安装了(通过MacPorts)ruby 1.9,因为它对应于最新的"PickAxe"书.

ruby 1.8.6的安装位置在/ usr/bin/ruby​​中ruby 1.9.1的安装位置在/ opt/local/bin中(当我使用MacPorts时安装在那里)

我的问题与下面相当标准的例子中的require'tk'语句有关的错误消息有关,该例子位于文件HelloWorld.rb中

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

当我调用命令ruby HelloWorld.rb时,我得到了我期望的结果; 该程序运行.

但是,当我调用命令ruby1.9 HelloWorld.rb时,我收到错误消息

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

我一直在搜索网络和各种帖子,但到目前为止还没有找到一个明确的解释,我需要做什么才能使ruby1.9能够在使用require'tk'语句时找到tk.

是否与运行gem1.9命令(也在/ opt/local/bin中)有关?

我试过调用sudo gem1.9 install tk但是会导致错误消息错误:无法在本地或在存储库中找到gem tk

任何建议将不胜感激.

hha*_*amu 6

ruby的TK绑定使用已编译的代码(而不是纯ruby),因此不同的ruby版本需要两次安装.

Darwinports默认情况下没有使用TK支持构建ruby 1.9.您需要选择tkmactk变体(请参阅portfile)

我使用darwinports已经有一段时间了,但我认为这是语法:

port install ruby19 +mactk
Run Code Online (Sandbox Code Playgroud)