Laravel使ってみた (2) - Configuration -

2013-06-09T00:00:00+00:00 Laravel PHP

引き続きドキュメント読み。 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

という感じ。環境名による設定の制御だとかは可能だというのが判明かなと

追記

rspec-railsのドキュメント読み Laravel使ってみた