When RedisModel.Meta.database has not been set, the meta class won't set it. No DB connection is configured or opened.
When MyRedisModel.db() is called, the old behavior is retained: if MyRedisModel.Meta.database is set, it'll be used, otherwise get_redis_connection() is called.
When MyRedisModel.Meta.database is a function object, it is executed and its return value is returned.
Subsequent calls to MyRedisModel.db() return the same object.
So now, when your database address is not known at import time, you set Meta.database to a function object that fetches that information at runtime, as late as possible (upon DB usage).
Fix for #519:
RedisModel.Meta.database
has not been set, the meta class won't set it. No DB connection is configured or opened.MyRedisModel.db()
is called, the old behavior is retained: ifMyRedisModel.Meta.database
is set, it'll be used, otherwiseget_redis_connection()
is called.MyRedisModel.Meta.database
is a function object, it is executed and its return value is returned.MyRedisModel.db()
return the same object.So now, when your database address is not known at import time, you set
Meta.database
to a function object that fetches that information at runtime, as late as possible (upon DB usage).