Neon – ENV variables support

- potapnik
 - Člen | 127
 
Ahoj všem, pokouším se přidat do NEONu konfiguraci na základě ENV proměnné. Někde jsem narazil na možnost doplnit do NEONU toto (jde o ty dvojité dvojtečky):
database:
	dsn: 'mysql:host=127.0.0.1;dbname=development'
	user: ::getenv('MYSQL_USER')
	password: ::getenv('MYSQL_PASSWORD')
Ale bohužel mi to NEON zřejmě nebere, jde o nastavení databáze pro CI codeship, kde se ty parametry předpokládám generují random, takže speciální config s natvrdo zadanými parametry není to pravé ořechové. Napadlo mě podstrčit containeru dbUser a dbPassword params a ty pak v configu použít jako %dbUser%, jenže je to takové kostrbaté a vůbec se mi to celkově nelíbí systémově.
Případně se nebráním změně continuous integration za jiný, jednoduchý a především funkční :-)
Předem díky moc.

- srigi
 - Nette Blogger | 559
 
Vyiesil som rovnaky problem vdaka @FilipProcházka velmi
jednoducho – staci v .neon subore includnut
.php subor:
main.neon
# bla bla bla
includes:
  - parameters.neon
  - database.php
database.php
use Nette\Http\Url;
$databaseConfig = [];
$driversMap = [
	'postgre' => 'pdo_pgsql',
	'postgres' => 'pdo_pgsql',
	'postgresql' => 'pdo_pgsql',
	'psql' => 'pdo_pgsql',
	'pgsql' => 'pdo_pgsql',
];
if ($databaseUrl = getenv('DATABASE_URL')) {
	$databaseUrl = new Url($databaseUrl);
	$driver = $driversMap[$databaseUrl->scheme];
	$host = $databaseUrl->host;
	$port = $databaseUrl->port;
	$user = $databaseUrl->user;
	$password = $databaseUrl->password;
	$database = trim($databaseUrl->path, '/\\');
	$databaseConfig = [
		'doctrine' => array_merge($databaseConfig, [
			'driver' => $driver,
			'host' => $host,
			'port' => $port,
			'user' => $user,
			'password' => $password,
			'dbname' => $database,
		]),
	];
}
return $databaseConfig;
Toto je riesenie priamo pre Doctrine2. DATABASE_URL ma takuto
formu: "pgsql://user:password@localhost/database"
Editoval srigi (8. 11. 2015 18:14)

- potapnik
 - Člen | 127
 
Díky moc, @srigi, zkusím to. @greeny – díky, nicméně u Travisu pro private repos jsem nenašel optimální variantu – 2 concurrent jobs nepotřebuju a měsíční cena mi tak přijde docela dost na těch pár projektů co mám. Kdyby byla varianta 1 concurrent job, 10 private repos, 20 USD měsíčně, tak je to samozřejmě jiná, ale takhle to bohužel nespadá do toho, co potřebuju.