かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Rubyスクリプトをexe化してみよう

Exerbというものを使うとできるらしい。
早速やってみよう。
公式サイトからさくっとダウンロード。
今日の段階では4.2.0が最新みたいだ。

ダウンロードして解凍したフォルダで下のコマンドを実行してインストールをする。

$ ruby setup.rb

お試し

単一のRubyスクリプトなら簡単にexe化できるみたいなので出勤前にやってみる。
用意したRubyスクリプトファイルはお馴染みのHello world

puts "Hello world"

ファイルの名前はhello.rbにした。

exe化する前に必ず動作確認すること!と書いてあるので動作確認。

$ ruby hello.rb
Hello world

うっし。流石に間違えてないな。

exerbコマンドにRubyのスクリプトファイルを渡してあげればexeになる。
早速やってみよう

$ exerb hello.rb

何も表示されないと成功らしい。
dirコマンドうってみると、確かにexeができていた。

2007/07/24  07:10           528,384 hello.exe

早速実行してみよう。

$ hello.exe
Hello world

ばっちり!!
Rubyインタプリタの入ってない所でも動くらしいのでかなりいいね!

Rubyスクリプトファイルが複数ある場合

複数用意してみた。

# hello_def.rb
class Hello
  def say_hello
    puts "Hello world"
  end
end
# hello_main.rb
require 'hello_def'

h = Hello.new
h.say_hello

実行してみると下の通りになる
何も難しいことはない

$ ruby hello_main.rb
Hello world
exe化

複数ファイルある場合は、どのファイルを使って、どのファイルがエントリポイントかとか設定しないといけない。
でも自動で作ってくれるらしい。
mkexyコマンドを使う。
使い方は、mkexyコマンドをrubyコマンドの代わりに使うだけ

$ mkexy hello_main.rb
Hello world

これを実行すると下のようなファイルが出来ている。

2007/07/24  07:20               155 hello_main.exy

このファイルをexerbコマンドに渡してやるとexeが出来る。

$ exerb hello_main.exy
$ dir
2007/07/24  07:23           528,384 hello_main.exe
$ hello_main
Hello world

とても簡単でした。