寫 Ruby 有種麻醉的效果,所以最近常玩得醉醺醺地。
不過Win32 下頭的 Ruby安裝不知道該說是友善還是不友善,Ruby官網一抓就下來了,安裝也很直觀愉快,就是放在 C:\Ruby 下頭,打開命令列之後,下達以下指令:
cd\
cd\ruby
cd bin
ruby –v
就可以看見 Ruby 向你招手了。不過,紅寶石如果只有這樣,那就不好玩了,當我們上銀樓買寶石時,最費工的往往不是裸鑽,而是戒臺跟旁邊二二六六的,不過我是個沒耐性的人,很討厭各種奇怪的安裝或修正方式,特別是網路上一堆 ruby 版本頗舊,安裝起來修改不少,加上從以前苦命時代就留下來的同功能軟體不重複原則,所以我測試過許多的安裝方式,包括:
1.Ruby 官版 + Eclipse:RDT 對於命令提示確實如網路所寫,有些低能……
2.Ruby官版+Netbeans for WinXP SP3:還不錯,只是 rake 一直出現問題,錯誤訊息頗擾人,加上還內建強姦版 JRuby,懶得解決。而且要怎麼在 IDE 中加入 GTK 呢……?
3.Ruby 官版 + Netbeans for Ubuntu:安裝很順利完成。只是我不瞭,Ubuntu 為了安裝策略而沒有將 Ruby 打包,所以得手動安裝,這真是見鬼了。
4.Ruby 官版 + Netbeans for OSX:安裝很方便,照說只要 XCode 就可以了,怎麼搞的,非要包個 Cocoa 上去……為了相容專案,所以只好又裝個 Netbeans 上去。
5.Ruby官版 + Cygwin:別開玩笑了。再說一次,我很懶。
6.Ruby官版 + EmEDIT:要這樣的話,那何必呢!
不過經過我這個懶人的到處亂找,還是找到不錯的工具了,現在列出安裝順序:
首先,先下載 Ruby in Steel。這是一套超級懶人包,會將所有的 Ruby on Rails 環境都幫你設定好。最妙的是,裡頭還包了一套 Visual Studio 2008 版本的 shell,因為我本來就使用 VS2008 寫 C# ,因此就選擇不裝了,讓它自己去設定就好。
如果你打算用其它環境,可以用懶人包王者 Ruby One Click 版本。其實上段講到的 Ruby in Steel,裡頭包的也是這個版本,因此,合理地,預設路徑就是:
C:\ruby
打開 Visual Studio 2008,第一個 Logo 就出現了紅寶石,開啟新專案,就可以看到了許多微妙的變化,包括下拉式選單有了 ruby 項目、多了一個 cmd 顯示視窗、工具也都設定好了。
其實這時候的 Ruby 已經可以使用了。再來是 GTK2,直接殺到 GTK2 官網去抓取,我很懶,所以直接使用推薦的 ruby-gnome2-0.16.0-1-i386-mswin32.exe, 然後將直譯器路徑設定好了之後,下達網頁建議的測試指令:
C:\ruby\>ruby -v
C:\ruby\>ruby -e "require 'gtk2'"
C:\ruby\>ruby -rgtk2 -e "Gtk::Window.new.show;Gtk.main"
wow,so nice,真是適合我這個懶人。然後是 Visual Studio的測試,先開一個 Ruby 專案檔,然後開始 key 程式碼:
require 'gtk2'
window = Gtk::Window.new()
button = Gtk::Button.new('Hello World')
window.add button
button.show
window.show
Gtk.main
GTK 視窗也很嗯哈哈地出現了。鬆一口氣。聽說 GTK2 帶的 Glade 可以使用 \ruby\bin\ 的 ruby-glade-create-template.bat 來轉換,等等來試試。
Glade 這玩意畫起來很不方便,如果用習慣 VS 或大部份的 GUI 工具的程設師可能一開始會搞不清楚狀況,其實我覺得設計的概念比較像以前 HTML 設計網頁時代的定位技巧,沒有 CSS 方便使用、加上瀏覽器各家胡搞的狀態,為了方便畫面元素定位就先畫表格,然後開始在表格中塞元素……
經過 ruby-glade-create-template 轉換的 .rb 檔案,大概會像下面這樣:
#!C:\ruby\bin
require 'gtk2'
require 'libglade2'
class F123Glade
include GetText
attr :glade
def initialize(path_or_data, root = nil, domain = nil, localedir = nil, flag = GladeXML::FILE)
bindtextdomain(domain, localedir, nil, "UTF-8")
@glade = GladeXML.new(path_or_data, root, domain, localedir, flag) {|handler| method(handler)}
end
def on_open1_activate(widget)
puts "on_open1_activate() is not implemented yet."
end
def on_paste1_activate(widget)
puts "on_paste1_activate() is not implemented yet."
end
def on_save_as1_activate(widget)
puts "on_save_as1_activate() is not implemented yet."
end
def on_about1_activate(widget)
puts "on_about1_activate() is not implemented yet."
end
def on_copy1_activate(widget)
puts "on_copy1_activate() is not implemented yet."
end
def on_new1_activate(widget)
puts "on_new1_activate() is not implemented yet."
end
def on_delete1_activate(widget)
puts "on_delete1_activate() is not implemented yet."
end
def on_cut1_activate(widget)
puts "on_cut1_activate() is not implemented yet."
end
def on_save1_activate(widget)
puts "on_save1_activate() is not implemented yet."
end
def on_quit1_activate(widget)
puts "on_quit1_activate() is not implemented yet."
end
end
# Main program
if __FILE__ == $0
# Set values as your own application.
PROG_PATH = "123.glade"
PROG_NAME = "YOUR_APPLICATION_NAME"
F123Glade.new(PROG_PATH, nil, PROG_NAME)
Gtk.main
end
程式碼不難懂,紅色的部份是我自己修改的。要注意的是,ruby 對於變數名稱命名規則有些規定,而 ruby-glade-create-template 轉換時的 class 名稱是由檔名決定的,我很白目地取了一個 123.glade,結果就轉出一個 123Glade Class,當然下場就是,直譯出包。
感覺很高興。Visual Studio 中看到 GTK 感覺真的很奇妙,一定要用一句話來描述我的心情的話,我只想說:
GTK,你長得真醜。
沒有留言:
張貼留言