こんにちは、nojimageです。aerithさんからバトンを受けての CakePHP Advent Calendar 2010 17日目です。今日もユルユルな感じでいきましょう。はい。 今日のtipsは、Linux/Macを開発環境で使っている方向けのシェル環境設定のお話です。 (Windowsの人はゴメンナサイ。

CAKE_CONSOLE=/path_to_cakephp_root/cake/console
PATH=$CAKE_CONSOLE:$PATH
alias cake='cake/console/cake'
alias bake='cake bake'
alias cake-cc="find ./app/tmp/cache -type f -name 'cake_*' -exec rm {} \;"

Bakerなら上記の5行をbashへ設定しておくと、作業がちょっぴり楽になります。 さっそくユーザホームにある .bashrc へ追記してみましょう。

vim ~/.bashrc

.bashrcを編集したら、

source ~/.bashrc

として設定を反映するのを忘れずに。

それでは、それぞれの行の意味について簡単に解説します。

1,2行目

CAKE_CONSOLE=/path_to_cakephp_root/cake/console
PATH=$CAKE_CONSOLE:$PATH

CakePHPのコンソールシェルのあるパスを設定して、環境変数PATHへ追加しています。 この2行を追記することで、どのパスからでも"cake"コマンドを実行できるようになります。

なお、CAKE_CONSOLEの"/path_to_cakephp_root"は、CakePHPのインストールパスになりますので、それぞれの環境にあわせて書き換えてください。

3行目

alias cake='cake/console/cake'

エイリアス"cake"を設定します。 1,2行目とかぶるじゃない?って思われる方もいるかもしれません。 これを設定しておくと、アプリケーションのROOTに居る場合、そのアプリケーションのcakeコマンドを呼び出すことが出来るようになります。

例えば、

/Application_A
     app/
     cake/ < - CakePHPのバージョン1.2

/Application_B
     app/
     cake/ <- CakePHPのバージョン2.0

/path_to_cakephp_root <- PATHに設定
     cake/ <- CakePHPのバージョン1.3

とあった場合、/Application_Aディレクトリで"cake"とすれば、前述のPATHにあるcakeコマンド(v1.3)ではなく、/Application_Aの中にあるcakeコマンド(v1.2)が呼び出されます。 同様に、/Application_Bディレクトリで"cake"とすれば、/Application_Bの中にあるcakeコマンド(v2.0)が呼び出されます。

なお、ディレクトリを変更してROOTではない/Application_A/appなどに移動するとエイリアスの設定は無効になり、PATHにあるcakeコマンド(v1.3)が呼び出されます。

4行目

alias bake=‘cake bake’

最も使うであろうシェル、“bake"のエイリアスを作成します。

bake model

とかで、使えるようになりますね。 (個人的にはschemaの方をもっと使うんですがが。

5行目

alias cake-cc="find ./app/tmp/cache -type f -name 'cake_*' -exec rm {} \;"

tmpディレクトリにあるモデルキャッシュなどを一括で削除する、“cake-cc"コマンドを作ります。 アプリケーションのROOTに居る状態で、

cake-cc

と、打てばモデルキャッシュやら設定ファイルのキャッシュやらを一括で削除します。 モデルキャッシュの消し忘れはBakerなら必ず一度はハマるので、今回の5行の中で一番便利な行だと思います。はい。

いかがでしたでしょうか。コンソールでの作業は馴れないとちょっと難しいかもしれませんが、少し工夫を加えると作業効率を上げることができます。今回は簡単なalias系のネタでしたが、もっとスゴイのあるよって方はぜひ教えてください。 それと残念ながら私はWindows環境を離れて久しいので、Windowsで同様のことができるかわかりません。できる方法があれば記事にしてアップして頂けるといいかなと思います。はい。

さて、CakePHP Advent Calendar 2010 も残りあと7日。どんなtipsが出てくるか楽しみですね。明日18日は、haltさんです!よろしくお願いします。 :)

おまけ

export CAKE_ENV=development

と書いておいて、cake側のconfig/bootstrap.phpあたりで

if (env('CAKE_ENV') === "development") {
    // ここに開発用の設定
}

としておくと、シェルから開発環境用の設定を利用できます。 WEBの場合で切り分けるなら、http.confや、app/webroot/.htaccessに

SetEnv CAKE_ENV "development"

と、設定すれば開発用設定になりますね。

参考: 開発環境と本番環境で設定情報を使い分ける - cakephperの日記(CakePHP, MongoDB, Lithium)

環境による設定の切り分けは、設置ディレクトリで分けるやり方もあってmon_satさんが紹介されています。 CakePHPの環境を判定するTips (CakePHP Advent Calendar 10日目) | 半年前の私への教科書

おまけ その2

bash補完ツール bash-completionを入れているならcakeコマンドの補完もできます。 cakeコマンドへのPATHを通した後、以下のスクリプトをbash_completion.d配下に保存します。

Linux (Redhat系 /etc/bash_completion.d/cake

Mac OS X (MacPorts /opt/local/etc/bash_completion.d/cake

cake と打って[TAB]キーを押せば利用可能なシェルの一覧が表示されます。

参考: http://bin.cakephp.org/saved/21917 CakePHP1.2向けはこちら Bash completion script for CakePHP’s console - cakebaker