symfonyコマンドをプロジェクトディレクトリの下層から実行する

待望のSymfony 1.0 beta 1が発表されました。アナウンスには面白そうな新機能がたくさんありますが、symfonyコマンドラインインターフェイス機能の追加もその一つです。

1.0.0の安定板リリースが待ち遠しいのですが、最近はネタ切れで本ブログ更新をサボってお叱りをうけてしまいましたので、これからさらに利用頻度があがるであろうsymfonyコマンドに関する小ネタで繋ぎたいと思います。

Symfonyで開発していてsymfonyコマンドはとても便利で重宝します。ただ、実行する為にプロジェクトのトップディレクトリにカレントディレクトリを移動しなくてはならず、少しだけ不便を感じていました。そこで以下のようなRubyスクリプトをパスの通ったディレクトリにsfというファイル名で置いておきラッパーとして利用しています。

#!/usr/bin/env ruby
#sf.rb -- a symfony command wrapper
require "FileUtils"
 
until File.file?("SYMFONY")
  FileUtils.cd('..')
  raise "can't find symfony project directory" if FileUtils.pwd == "/"
end
cmd = "symfony " << ARGV.join(" ")
puts cmd
system(cmd)

このスクリプトはsymfonyのプロジェクトディレクトリのトップにつくられるSYMFONYファイルを探して、見つかればそこにchange directoryします。その後sfに与えられた引数をsymfonyコマンドに引き渡します。 つまり、

tumf@localhost:~/work/myproj/apps/frontend/modules/user/templates $ sf cc
#注:人間が入力するのは、【sf cc】の部分です。

とすれば、

cd ../../../../..
symfony cc

と同様の結果を得る事ができます。コマンド終了後はsf実行前にカレントディレクトリが戻りますので、sfコマンド以前の作業をそのまま続行する事ができます。

Leave a Reply

You must be logged in to post a comment.