Neon – ENV variables support

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
potapnik
Člen | 127
+
+1
-

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.

greeny
Člen | 405
+
0
-

Doporučuju Travis CI, o napojení na Nette/Tester jsou i články přímo v dokumentaci.

srigi
Nette Blogger | 558
+
+4
-

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
+
+1
-

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.

greeny
Člen | 405
+
+3
-

@potapnik já Travis používám jen na public projekty, nezmínil jsi, že jde o privátní :) proto jsem ho doporučil ;)