Laravel使ってみた (2) - Configuration -
引き続きドキュメント読み。 http://laravel.com/docs/configuration をやってみる
Config.getとか
app/configに設定ファイルを定義すれば良い。設定ファイルはPHPファイルで内容はreturn arrayをする。例えばapp/config/hoge.phpを作る
<?php
return array(
"message" => "hoge fuga foobar"
);
とかしたら
<?php
Config.get("hoge.message");
みたいにファイル名がaliasな感じ?でキー名をドットでつなげて利用できる模様
App::environmentに関して
App::environmentメソッドを使って環境名?的なを取る事が出来る模様。デフォルトではproductionが返されるけど、bootstrap/start.phpとかにそういう処理を書く事で制御する事が可能な模様
でローカル環境で検証しているとか場合だと
<?php
$env = $app->detectEnvironment(
array(
"local" => array("your-machine-name")
)
);
みたいな感じになってる。your-machine-nameとローカルのマシン名?(恐らくは`hostname`とかでマッチする名)がマッチした場合にはこの環境名が使われる。つまりyour-machine-nameと一致したらApp::environmentはlocalが利用される事になる。でdetectEnvironmentはfunctionを渡すことも出来る
今回検証している環境がnginx+php-fpmなので。nginxに
fastcgi_param LARAVEL_ENV development
と設定しておき
<?php
$env = $app->detectEnvironment(function() {
if (isset($_SERVER["LARAVEL_ENV"])) {
return $_SERVER["LARAVEL_ENV"];
}
return "development";
});
のようにしておけば、Webサーバーとのやり取りで環境名を設定する事も可能な模様。でapp/config/環境名とかにも設定を置く事が出来る模様。例えば上記で作成したhoge.phpをapp/config/development/hoge.phpと定義(値を変えて)した場合には、こっちの読み込みが優先される模様。
更に
- app/config/database.phpが無い
- app/config/[development|production]/database.phpはある
- app/config/testing/database.phpは無い
場合にLaravelのテストを実行するとコントローラーとかでデータベースを使ってるとエラーになる。要はapp/config/環境名/設定ファイルが無ければ、app/configディレクトリ直下にある設定を利用する。でそれも無ければ読み込まれない的な感じかなと。
ちなみにテスト時の環境名はtestingになるのでテスト時に使用するデータベースとかを切り替えたりも出来る。その際にmigration辺りは
artisan --env=testing migrate
とかでテスト向けのmigrationを実行する事も可能な模様
artisan up/downに関して
- artisan downでメンテナンスモード
- artisan upでメンテナンスモードから復旧
的な事が出来る。でそこでの処理自体がapp/start/global.phpなどに、down時のレスポンスを処理したり出来る模様。デフォルトではHTTP503なエラーを送出
まぁ特に突っ込みどころも無い気がするので(ry
という感じ。環境名による設定の制御だとかは可能だというのが判明かなと
追記
App::environmentでマッチするのが、app/start/environment名.phpが呼ばれるっぽい
— kinjouj (@kinjou_j) June 10, 2013