nanisore oishisou

プログラマ、ララ・ベル子さん改めArm4さんのゆるふわ奮闘記。

Laravelの環境(environment)の設定について

ちょりっす。ベル子です。
今回はベル子のどじっ子ぶりがマジぱないです。
「こいつ、ぷぷぅっw」っと思いながら読んでくれると嬉しいです。

私ってほら、失敗して覚えていくタイプなんで!!
私ってほら、失敗して覚えていくタイプなんで!!
私ってほら、失敗して覚えていくタイプなんで!!

ふぅ。

突然ですが皆さん、environment は何と読むか分かりますか。
「簡単や!エンビロンメントやろ!!」と思った、そこのあなた、

ブブーーーーーーーーー
マイナス500点です!



正解は「インヴァイラメン」です。
発音記号はこちら↓
ɪnvάɪ(ə)(n)mənt(米国英語)envάɪ(ə)(n)mənt(英国英語)/
だいたいeで始まる英単語は日本語の「エ」ではなく「イ」と発音するので注意です。

イギリスでは「エ」なんですね。発音記号を調べてみて、はじめて知りました。

でもeconomyは、どちらも「イ」のようです。
ɪkάnəmi(米国英語)ɪkˈɔnəmi(英国英語)
カタカナにするなら「イカナミー」でしょうか。

どうですか。私って博識でしょ?(ドヤ顔)


そんな博識なベル子に、「laravelのマイグレーションを使ってDBテーブル作っておくれ」という指令がボスから出されました。
いくら新人プログラマとはいえ博識なベル子ですから、マイグレーションについてはドキュメントを読破済みです!ゆえにDBテーブルは、なんとか一人で作ることができました(はぁはぁ)。

( その後、indexの付け方が間違っていてマスターPG(匠)の方に怒られたことは、ここだけの秘密です(///ω///) 

たぶんテーブルは作れたと思うので、確認したいのが乙女心です。
DBの設定ファイルはapp/config/database.phpに書いてあるということは、すでに頭に入っている私ですから、mysqlのデータベース名、ユーザ名、パスワードをチェックし、コマンドーんをしてみたわけです。

「あれ? データベースがない」

自分が間違っていたのかなと思いデータベース名を確認して接続ということを5回ほど繰り返してみました。
なんということでしょう。あるはずのデータベースが見当たらないではありませんか!

困ったときは匠に聞いてみるしかありません。

べ「あの....データベースが表示できなくて.....」
匠「なんのデータベース?」
べ「forgeってデータベースなんですけど.....」
匠「え?もう1回言って」
べ「ふぉーじ?(まさかフォルゲ?)」
匠「え?(何いってんだコイツ)」
べ「え?(自分で設定したんですよね?)」
匠「.......ここに書いてある◯◯ってやつだから」

DBの設定は本番環境とテスト環境などで違うものですよね。
Laravelには、こういった複数の環境設定を切り替えるシステムがあるのです。
超便利ですね。さすがフレームワーク

ベル子はそのことを、そのときまで全く知らなかったんです。
きゃーやめてぇ!そんな顔で見ないでぇ!

よく考えたらforgeではないことくらい気づけるはずです。
デフォで書いてあるやつだからです。
なんという勘の鈍さ!!
「もしかして....フォルゲ?」とか言わなくてよかったです。

匠が教えてくれたファイルを確認して無事にDBにアクセスできたベル子ですが、なんのことやら分かっていないので、おうちでこっそり調べてみました。

星は何でも知っている。google先生も何でも知っている!
イブンバトゥータスカラベルージュ!

Ah-ha!!
にゃるほど。
ルートディレクトリで

$ php artisan env

コマンドーんすると、今、適用されている環境名が表示されるんですね!
そして、環境の設定はbootstrap/start.phpにマシンのホスト名を設定すればよいようです。
さっそく私もマイlaravelに設定してみます。

php artisan envすると、なぜか Current application environment: production と出てきます。
デフォで設定されている


$env = $app->detectEnvironment(array(

 'local' => array('homestead'),

));

というのはhomestead環境の人のホスト名のようですね。
現在の私のホスト名を調べてみましょう。

$ hostname


そのままなコマンドをどーんです。

localhost.localdomain


へえ〜。ホスト名、なんかウケる。

こちらの動画を確認したところ
何の環境にも当たっていない場合、Laravelでは、デフォルトでproduction環境となるそうです。

$env = $app->detectEnvironment(array(

        'local' => array('homestead'),
        'development' => array('localhost.localdomain'),

));

このように追記して、php artisan envしてみると、

Current application environment: development


と表示されました!やったー♪

ちなみに

App::environment();


とすると環境名の取得ができるので、viewで確認することもできます。

あとは、app/config/localフォルダをコピーしてdevelopmentフォルダを作ります。
その中のdatabase.phpファイルを編集して自分の環境と合わせてください。

これで私も匠と同じことができました。(ドヤ顔)
さらに、よく意味が分かってなかったことも全くバレずに済みました。

Laravelって本当に便利ですね!


▼参考にしたサイト
Laravel 4 環境ごとの設定
Laravel4で実行環境の設定を変更する


では皆さん、こんな私ですがこれからも応援よろしくお願いします!