Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2006-12-07

[MyGame] install_mygame.rb

今まで MyGame を手元で使うときは、アプリケーションを動作させるディレクトリに mygame.rb と mygame/boot.rb を置いていた。しかし、これではプロジェクトが増えてくると面倒だ。

そこで、 Ruby/SDL に添付されている install_rubysdl.rb の見よう見まねで MyGame のインストーラを作ってみた。

これがあれば MyGame 動作環境の構築は次のような手順でOKだ。

  1. ActiveScriptRuby をダウンロードしてインストール
  2. Ruby/SDL(Windows' binary) をダウンロードして install_rubysdl.rb をダブルクリック
  3. MyGame をダウンロードして install_mygame.rb をダブルクリック(まだ公開してないけど)

これだけだ。うん、だいぶ簡単になったぞ。

MyGame は次のような構成になっている。

mygame.rb
mygame/boot.rb

mygame_boot.rb の方がいいのだろうか?

以下 Ruby/SDL の install_rubysdl.rb を参考にして作ったもの。 Ruby に自作のスクリプトをインストールしようなんて考えたことなかったからこれでいいのかちょっと不安。

require 'rbconfig'
require 'fileutils'
require 'optparse'

dlldir = nil
option = { :noop => false, :verbose => true }

ARGV.options do |opt|
  opt.on('--dlldir DIR'){|dir| dlldir = dir}
  opt.on('--no-harm'){ option[:noop] = true }
  opt.on('--quiet'){ option[:verbose] = false }

  opt.parse!
end

dlldir ||= Config::CONFIG["bindir"]
sitelibdir = Config::CONFIG["sitelibdir"]
mygame_sitelibdir = File.join(sitelibdir, 'mygame')

FileUtils.mkpath(sitelibdir, option)
FileUtils.mkpath(mygame_sitelibdir, option)

Dir.glob("lib/*.rb"){|fname| FileUtils.install(fname, sitelibdir, option)}
Dir.glob("lib/mygame/*.rb"){|fname| FileUtils.install(fname, mygame_sitelibdir, option)}