@@ -43,7 +43,12 @@ exports.loadFile = function(fileName, currentEnv, plugins) {
43
43
try {
44
44
fs . statSync ( fileName ) ;
45
45
} catch ( e ) {
46
- throw new Error ( 'Could not find database config file \'' + fileName + '\'' ) ;
46
+ if ( ! process . env . DATABASE_URL ) {
47
+ throw new Error ( 'Could not find database config file \'' + fileName + '\'' ) ;
48
+ }
49
+ else {
50
+ return exports . loadUrl ( process . env . DATABASE_URL , currentEnv ) ;
51
+ }
47
52
}
48
53
49
54
try {
@@ -77,7 +82,18 @@ exports.loadFile = function(fileName, currentEnv, plugins) {
77
82
throw e ;
78
83
}
79
84
80
- config = require ( path . join ( process . cwd ( ) , fileName ) ) ;
85
+ try {
86
+ config = require ( path . join ( process . cwd ( ) , fileName ) ) ;
87
+ }
88
+ catch ( e ) {
89
+
90
+ if ( ! process . env . DATABASE_URL ) {
91
+ throw e ;
92
+ }
93
+ else {
94
+ return exports . loadUrl ( process . env . DATABASE_URL , currentEnv ) ;
95
+ }
96
+ }
81
97
}
82
98
83
99
return exports . loadObject ( config , currentEnv ) ;
@@ -106,13 +122,13 @@ function walkConfig(level) {
106
122
}
107
123
108
124
exports . loadObject = function ( _config , currentEnv ) {
125
+
109
126
var out = new Config ( ) ;
110
127
// do not overwrite the users config
111
128
var config = JSON . parse ( JSON . stringify ( _config ) ) ;
112
129
113
130
for ( var env in config ) {
114
131
115
-
116
132
if ( config [ env ] . ENV ) {
117
133
if ( ! process . env [ config [ env ] . ENV ] )
118
134
log . verbose ( 'Environment variable ' + config [ env ] . ENV + ' is empty!' ) ;
@@ -127,12 +143,20 @@ exports.loadObject = function(_config, currentEnv) {
127
143
out [ env ] = config [ env ] ;
128
144
}
129
145
130
- if ( typeof ( config [ env ] . url ) === 'string' ) {
146
+ if ( typeof ( config [ env ] . url ) === 'string' || process . env . DATABASE_URL ) {
131
147
132
- config [ env ] = Object . assign (
133
- config [ env ] ,
134
- exports . loadUrl ( config [ env ] . url , env ) [ env ]
135
- ) ;
148
+ if ( typeof ( config [ env ] . url ) !== 'string' ) {
149
+ config [ env ] = Object . assign (
150
+ config [ env ] ,
151
+ parseDatabaseUrl ( process . env . DATABASE_URL )
152
+ ) ;
153
+ }
154
+ else {
155
+ config [ env ] = Object . assign (
156
+ config [ env ] ,
157
+ parseDatabaseUrl ( config [ env ] . url )
158
+ ) ;
159
+ }
136
160
delete config [ env ] . url ;
137
161
}
138
162
else if ( config [ env ] . url && config [ env ] . url . value ) {
0 commit comments