<< 前 ホーム 次 >>

bakaid: 20051114

東スポ。エディ・ゲレーロが亡くなったそうな。ご冥福をお祈りします。

--

それから西日本ボクシング協会の異種格闘技戦に参加した者を永久追放にする
という話。

異種格闘技戦というか、他のプロ格闘技に参加した者というのが正確なところ
なんだろう。こないだのK-1にしても異種格闘技じゃなく、純然たるK-1 ルー
ルだったはず。

ま、細かいことは置いといて。それにしてもバカな決定をしたもんだ。柔道や
相撲にしてもそうだが、こういう閉鎖的な業界は面白くない。

日頃から鍛練している競技とはルールが異なるのだから、負ける可能性が高い
のは当たり前のこと。負けたとして、それを肥やしにして本道に戻るも良し、
さらに深みにハマるのも良しじゃないか。そうした選手の自由を縛って何が面
白い?

--

自分の場合、プロジェクトのディレクトリは大体こんな感じになることが多い
んです。fooというプロジェクトだとして:

~/test/foo
  x.rb
  y.rb
  test/
    t-all.rb
    t-x.rb
    t-y.rb
    data/
      ...

テスト全部を実行するときはt-all.rbを実行するわけです。ほんとはこれなん
かtest/unitでやってほしいんですけど。

で、当然ながら、Emacsではfoo以下のディレクトリのどこのファイルでも開く
わけです。モデル・コードとテスト・コードとで別々にEmacsを立ち上げるこ
ともあるんですけど。そうしたほうがバッファが整理されてて見やすいですか
ら。でも、1つのEmacsでモデルもテストも扱うことも多いわけで。そうすると、
テストが面倒になるんですね。

テストが面倒になるっていうのは、いくつか理由があって。まず前提として、
ウィンドウを切り換えたくないというのが1つ。テスト専用でxtermなりを立ち
上げておくっていうのもアリなんですけど、それだとウィンドウを切り換えな
くっちゃいけない。Emacsの他にもブラウザも立ち上げてますし、他にも端末
ソフト立ち上げますし、思ったウィンドウに切り換えるのが結構手間なんです
ね。

それと同じようにshellモード (M-x shell) も十分じゃない。各Emacsにつき1
つしかshellモードは立ち上げられませんし、テストするにはいちいちcdしな
いといけない。

結局やりたいことは、Emacsでどこのファイルを開いていようが、テストを一
発で実行できるようにすること。テストする度にウィンドウを切り換えたくな
いし、バッファも切り換えたくない。

そこでM-!です。ただ、M-!はバッファのカレント・ディレクトリと結びついて
ますから、そのままじゃダメ。t-all.rbを実行すればいいだけなんですけど、
でも、t-all.rbには依存関係があります。1つ上のディレクトリのスクリプト
をrequireしなきゃいけないんですね。この『1つ上のディレクトリ』っていう
のが厄介で、バッファのカレント・ディレクトリとからんで、コマンド一発っ
てわけにはいきません。長々と絶対パスを指定するのも面倒。

で、結局スクリプトを書くことに。プロジェクトのディレクトリ直下に次のよ
うなスクリプトを用意しました:

#!/usr/bin/env ruby
# project.rb
PROJECT_DIR = File.dirname(__FILE__)
TEST_DIR = PROJECT_DIR + '/test'
TEST_FILE = 't-all.rb'

def test_project(testfile)
  testfile = TEST_FILE unless testfile
  Dir.chdir(TEST_DIR) do
    system("ruby -I.. #{testfile}")
  end
end

test_project(ARGV[0])

これをM-!を実行します。ただ、M-!で実行するときは絶対パスで指定しないと
いけません。

M-! ~/test/foo/project.rb

みたいな感じですね。こうしておけばM-!のヒストリに登録されて、プロジェ
クトのどこのディレクトリにいても、いや、プロジェクト・ディレクトリの外
でもテストを実行できるようになります。

M-! M-p RET

です。これでウィンドウもバッファも切り換えずにテストがほぼ一発で実行で
きるようになった次第です。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails