2009-07-21 51 views
1

我開始在運行Leopard的iMac上學習ruby的基礎知識。如何使ruby在require tk語句中看到tk?

,現在是我的系統上的版本是1.8.6紅寶石

但是,我也獨立安裝(通過使用MacPorts)紅寶石1.9,因爲對應於最新的「鶴嘴鋤」的書。

對Ruby 1.8.6的安裝位置在/ usr/bin中/紅寶石 的安裝位置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 

當我調用命令 紅寶石HelloWorld.rb 我做得到我期望的結果;該程序運行。

然而,當我調用命令 ruby​​1.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中)有關?

我試圖調用 須藤gem1.9安裝TK 但導致的錯誤信息 錯誤:無法找到本地或者在倉庫

任何建議,將不勝感激寶石TK。

+0

我建議加入「陸委會」和「tk」標籤也是這個問題。 – statenjason 2009-07-21 02:08:19

回答

1

您需要使用./configure調用中的with-tcltk-framework標誌編譯ruby。詳細信息請參見TkDocs - Installing Tk頁面。第一部分是Mac OS X,然後其旁邊帶有Ruby徽標的部分就是您需要的部分。

另一件值得注意的事情是網站建議不要使用Ruby 1.9.x for Tk。但是,確定它是否可行的唯一方法就是自己嘗試一下。

6

紅寶石的TK綁定使用編譯代碼(而不是純紅寶石),所以需要兩種安裝來適用於不同的ruby版本。

Darwinports默認情況下不構建Ruby支持1.9的TK支持。你需要選擇的tkmactk變種(see the portfile

這已經有一段時間,因爲我已經使用和Darwinports,但我認爲這是語法:

port install ruby19 +mactk
+0

是的,命令: 端口安裝ruby19 + mactk 工作! – 2009-07-27 14:42:28