JRubyのコードをexeファイルにする方法とMacの.app形式にする方法
JavaとかJRubyはインストールしておいてください。
やり方は省略です。
rawrをインストールします
私はMatzRubyがメインなので、jruby -Sでgemやrakeを操作します。
gemとかrakeとか打つと、MatzRubyが起動してしまいますので。
jruby -S gem install rawr
rawr-1.1.2のgemパッケージにはjruby_fetch.rbの入れ忘れがあるので、
rawr-1.1.2/libのディレクトリにwgetで入れてしまいます。
http://gitorious.org/projects/rawr
からとって来てください。
wget http://gitorious.org/projects/ 途中省略 /lib/jruby_fetch.rb
実行するスクリプトを用意します
rubyの実行ファイルはmain.rbという名前にし、
lib/rubyに入れておきます。
とりあえず、以下をmain.rbと言う名前で保存しましょう。
#!/usr/bin/env jruby require 'java' import 'javax.swing.JFrame' import 'javax.swing.JButton' frame=JFrame.new button=JButton.new("Click Me") frame.default_close_operation=(JFrame::EXIT_ON_CLOSE) frame.content_pane.add(button) frame.set_size(300,300) frame.visible=(true)
また、jruby.jarが必要なので、
jruby-1.1.6/lib/jruby.jarをコピーしておきます。
mkdir jikken cd jikken mkdir -p lib/ruby mkdir -p lib/jruby mv ~/main.rb lib/ruby cp ~/local/jruby-1.1.6/lib/jruby.jar lib/jruby
作成します
作業ディレクトリへrawrのインストール
jruby -S rawr install
rakeのtask一覧を見てみましょう
% jruby -S rake -T (in /Volumes/xibbar/jruby/rawr) rake rawr:build_data_jars # Build all data jars rake rawr:bundle:app # Bundles the jar from rawr:jar into a ... rake rawr:bundle:exe # Bundles the jar from rawr:jar into a ... rake rawr:clean # Removes generated content rake rawr:compile # Compiles all the Java source and Ruby... rake rawr:compile_duby_classes # Compiles the Duby source files specif... rake rawr:compile_java_classes # Compiles the Java source files specif... rake rawr:compile_ruby_classes # Compiles the Ruby source files specif... rake rawr:get:current-jruby # Fetch the most recent build of jruby... rake rawr:get:current-stable-jruby # Fetch the most recent stable jruby-co... rake rawr:jar # Uses compiled output and creates an e... rake rawr:load_configuration # Loads data from the build_configurati... rake rawr:prepare # Creates the output directory and sub-...
パッケージング用のディレクトリを作成します。
jruby -S rake rawr:build_data_jars
Windowsの実行形式であるexeファイルを作成
特にコンフィグは何もしなくてもいけるはず。exeを作成します。
jruby -S rake rawr:bundle:exe
これでpackage/windowsの中にファイルがいくつかできます。
% ls -l package/windows total 80 -rwxr-xr-x 1 fujioka staff 25600 Dec 20 22:28 ChangeMe.exe -rw------- 1 fujioka staff 7212 Dec 20 22:28 ChangeMe.jar -rw-r--r-- 1 fujioka staff 879 Dec 20 22:28 configuration.xml drwxr-xr-x 3 fujioka staff 102 Dec 20 22:28 lib
実体はjarファイルとlibにあるjruby.jarですね。
これらのファイル全部必要です。人に提供するときは、
いいから入れろと説明しましょう。^^;
実行するにはjavaをインストールしてもらい、これらのファイルのみで実行できます。
ただ、jarのダブルクリックでも行けるので、exeは必要ないかもしれんとか思いました。
Macの実行形式である.appディレクトリを作成
exeファイルができているはずなので、簡単です。
jruby -S rake rawr:bundle:app
すると、ディレクトリができます。
ls -l package/osx total 0 drwxr-xr-x 3 fujioka staff 102 Dec 20 22:26 ChangeMe.app
Finderから覗いてみて、ダブルクリックで起動します。
なんだか、jrubyでもスマートなプログラムを書けそうな気がしますね。
これだと、javaをインストールしてもらいさえすれば、
rubyでマルチプラットフォームなGUIアプリを人に提供できますね。
いい感じです。
かっこいい!!
設定を編集しよう
build_configuration.rbが設定ファイルのはずなので、ここを編集すると、
ChangeMeから任意の名前に変えたりできるはず。