Environnement avec laravel 4

Après l’installation basique, la première chose avec Laravel 4 a faire, est de bien configurer son projet. Et oui, par défaut, Laravel est en mode Production ! Bien sûr c’est si logique :)

production en localEn production en local ?

Laravel a 3 « Application Environment » :

Testing

Mode spécifique pour pouvoir exécuter les test unitaires. A ré-utiliser a minima a chaque changement pour le mode « production ».

Local

le mode normalement développement, a moins que vous développiez directement sur le serveur de production ? Donc je dirais mode développement sur serveur local ou non; le mode non-production pour faire simple :) car le serveur n’est pas obligatoirement en local (sur notre propre machine), il est plus généralement sur l’intranet et sur un serveur-virtuel.

Production

Le site Laravel installé sur le(s) serveur(s) de production, qui tourne avec 10 000 utilisateurs par heure! Dans ce mode, on ne touche surtout pas au code. On écrase cette version avec la « locale » ou on la met a jour avec un script testé en « local ».


Le mode production par défaut ! moi c’est bizarre, mais je préfère être en mode Local par défaut. Laravel nous permet de déterminer automatiquement dans quel mode il se trouve. Nous devons pour cela modifier le fichier /bootstrap/start.php

$env = $app->detectEnvironment(array(
	'local' => array('your-machine-name'),
));

Si votre machine s’appelle bien « your-machine-name », et bien ne changez rien :)
Si comme moi, vous jouez avec les virtual-host (www.intranet.local), alors un test sur le nom de domaine va me dire si je suis en « local » ou en mode production.

$env = $app->detectEnvironment(array(
	'local' => '*.local'
));

Pas de nom d’hôte particulier, pas de nom de machine particulière, vous avez alors la possibilité de changer une variable d’environnement dans apache

$env = $app->detectEnvironment(function() {
    return ($_SERVER['MY_LARAVEL_ENV']=='en_developpement')?'local':'production';
});

Maintenant Laravel bascule automatiquement dans le bon mode!
Il nous faut quelques modifications du local par rapport au mode production:

Pour le mode local (comme le mode testing), il faut créer un dossier « /app/config/local/ ». Vous recopiez les fichiers app/config/app.php et app/config/database.php dans votre nouveau dossier app/config/local.

Le fichier database est utilisé si vous n’avez pas la même base de donnée avec les mêmes login et pass. Mais plus intéressant sont les différences entre nos 2 fichiers app.php.

Production : debug est a false bien sûr, mais il est aussi possible de ne pas charger certaines fonctionnalités.

<?php // app/config/app.php

return array(
   'debug' => false,
   'providers' => array(
	'Illuminate\Foundation\Providers\ArtisanServiceProvider',
	...
	//'Illuminate\Database\MigrationServiceProvider',
	//'Illuminate\Redis\RedisServiceProvider',
),
    'aliases' => array(
	//'Artisan' => 'Illuminate\Support\Facades\Artisan',
	//'Redis'   => 'Illuminate\Support\Facades\Redis',
	//'Seeder'  => 'Illuminate\Database\Seeder',
    ),
);

Local : ici nous mettons debug=> true bien sur :) et, ajoutons des fonctionnalités uniquement pour le mode développement par exemple : une barre de debug a la fin de nos pages :

 'providers'=>array(
    'Onigoetz\Profiler\ProfilerServiceProvider'
)

et une classe pour profiler notre code

 'aliases'=>array(
    'Stopwatch' => 'Onigoetz\Profiler\Stopwatch'
)

Dans votre code, maintenant vous pouvez écrire des choses du  type :

if (App::environment()=='local') /* écrire dans ConsolePhp */;

Le composer.json de Laravel a 2 entrées require et require-dev, il est possible de lancer composer.phar avec les options --dev ou --no-dev pour qu'il ne charge pas le package dans l'entrée "require-dev". Malheureusement il n'y a aucune liaison entre Composer et le mode d'environnement de Laravel.

 

Share Button

Vous devriez aimer...