From 24e051b1e9605f143f61e83ac0b7c38526b6bf90 Mon Sep 17 00:00:00 2001 From: Henri Bergius Date: Tue, 10 Apr 2012 15:47:11 +0200 Subject: [PATCH 1/2] Enable setting up Redis with URL --- lib/adapters/redis.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/adapters/redis.js b/lib/adapters/redis.js index b9bcc935..10c05463 100644 --- a/lib/adapters/redis.js +++ b/lib/adapters/redis.js @@ -8,6 +8,16 @@ var redis = safeRequire('redis'); exports.initialize = function initializeSchema(schema, callback) { if (!redis) return; + if (schema.settings.url) { + var url = require('url'); + var redisUrl = url.parse(schema.settings.url); + var redisAuth = redisUrl.auth.split(':'); + schema.settings.host = redisUrl.hostname; + schema.settings.port = redisUrl.port; + schema.settings.db = redisAuth[0]; + schema.settings.password = redisAuth[1]; + } + schema.client = redis.createClient( schema.settings.port, schema.settings.host, @@ -361,7 +371,7 @@ function applyFilter(filter) { } }); return pass; - } + }; function test(example, value) { if (typeof value === 'string' && example && example.constructor.name === 'RegExp') { From d7cc8b2d5100a9a3a26f4be8f9070901a4fd1ff3 Mon Sep 17 00:00:00 2001 From: Henri Bergius Date: Tue, 10 Apr 2012 16:30:55 +0200 Subject: [PATCH 2/2] Some safeties to URL handling --- lib/adapters/redis.js | 10 ++++++---- lib/schema.js | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/adapters/redis.js b/lib/adapters/redis.js index 10c05463..97599240 100644 --- a/lib/adapters/redis.js +++ b/lib/adapters/redis.js @@ -11,11 +11,14 @@ exports.initialize = function initializeSchema(schema, callback) { if (schema.settings.url) { var url = require('url'); var redisUrl = url.parse(schema.settings.url); - var redisAuth = redisUrl.auth.split(':'); + var redisAuth = (redisUrl.auth || '').split(':'); schema.settings.host = redisUrl.hostname; schema.settings.port = redisUrl.port; - schema.settings.db = redisAuth[0]; - schema.settings.password = redisAuth[1]; + + if (redisAuth.length == 2) { + schema.settings.db = redisAuth[0]; + schema.settings.password = redisAuth[1]; + } } schema.client = redis.createClient( @@ -23,7 +26,6 @@ exports.initialize = function initializeSchema(schema, callback) { schema.settings.host, schema.settings.options ); - schema.client.auth(schema.settings.password); schema.client.on('connect', callback); diff --git a/lib/schema.js b/lib/schema.js index da48d496..158a4d21 100644 --- a/lib/schema.js +++ b/lib/schema.js @@ -48,6 +48,9 @@ function Schema(name, settings) { this.name = name; this.settings = settings; + // Disconnected by default + this.connected = false; + // create blank models pool this.models = {}; this.definitions = {};