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 | 558
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.