From: arton Date: 2014-08-17T22:16:11+09:00 Subject: [ruby-list:49918] ANN: FireRuby pre alpha こんにちは Firefoxのウィンドウを使ってRubyを動かすFireRubyというのを作り始めました。 少しは動くので公開します。 https://github.com/arton/FireRuby これは何? FirefoxのXULアプリケーションの内側でRubyインタープリタを動かすプログラム です。 HTMLもどき(XUL)のGUIを使えるRubyと考えれば良いです。デスクトップアプリ ケーションとなります。 環境 OSXで試しました。多分Linuxでも動くと思います。Windowsの場合はちょって手 を入れる必要があります。が、ActiveScriptRuby+HTAがあるので、Windowsで積 極的に動かす必要はクロスプラットフォームアプリケーション以外には無いでしょ う。 Firefoxは31.0を、Rubyは2.1.2p95をそれぞれ使って動かしましたが、おそらく3 年前あたりのFirefoxでも動作するような気がします。Rubyは2.0以降なら問題な く動きそうです。ただしFiddleが必須です。 また、組み込みRubyとして動作するので、Rubyは--enabled-sharedを有効にして 構築したバージョンの必要があります。 起動方法 とりあえず、gitからcloneしてルートディレクトリのfireruby(シェルスクリプ ト)で起動できると思います。 ・FirefoxはLinuxなら/opt/firefox、OSXなら/Applications/Firefox.appにイン ストールされていることを前提としています。 想定通りに起動できるとFirefoxの小さなウィンドウが開きます。下の方にRuby のバージョン文字列が表示されていれば成功です。 ウィンドウにはテキストボックスがあるのでそこにスクリプトを入力してevalボ タンをクリックすると、下の方に結果の文字列を表示します。 たとえば、3+5と入力すると8が表示されます。 DOMの操作 DOMというクラスがあるのでそれを使います。 windowとdocumentはその名前を、それ以外のDOM要素はidを指定してDOMクラスの インスタンスを作成してください。 例) win = DOM.new('window') win.alert('hello') # helloがアラート表示される win.setTimeout("alert('hello');", 3000) # 3秒後にhelloがアラート表示され る ソフトウェア構造 XULアプリケーションです(ただしXULRunnerを使うと余分なインストールが必要 になるので、Firefoxを使うようにしています)。 chrome/content の下にプログラムがあります。 main.xul ウィンドウの定義 main.js 起動時とDOMのイベントを処理するJavaScript。js-ctypes(内部は libffi)を使ってRubyと会話します。 main.rb main.jsから呼ばれるRubyのスタブです。上記のDOMクラスが定義されて います。fiddleを使ってJavaScriptのコールバック関数を呼び出してDOMを操作 します。 では。 -- arton