snaplet-redis 0.1.3.3 → 0.1.4
raw patch · 3 files changed
+38/−5 lines, 3 filesdep +textPVP ok
version bump matches the API change (PVP)
Dependencies added: text
API changes (from Hackage documentation)
+ Snap.Snaplet.RedisDB: instance Configured PortID
Files
- ChangeLog +6/−0
- snaplet-redis.cabal +4/−2
- src/Snap/Snaplet/RedisDB.hs +28/−3
+ ChangeLog view
@@ -0,0 +1,6 @@+-*-org-*-++* 0.1.4+** Support using a Unix socket++ Contributed by Daniel Patterson <dbp@riseup.net>
snaplet-redis.cabal view
@@ -1,5 +1,5 @@ Name: snaplet-redis-Version: 0.1.3.3+Version: 0.1.4 Synopsis: Redis support for Snap Framework Description: This package provides a snaplet which exposes interface to Redis in-memory key-value storage as@@ -17,6 +17,7 @@ Build-type: Simple Cabal-version: >=1.6 Tested-with: GHC == 7.6.3, GHC == 7.8.3+Extra-source-files: ChangeLog source-repository head type: git@@ -36,4 +37,5 @@ mtl >= 2 && < 3, network >= 2.4 && < 2.6, snap >= 0.11 && < 0.14,- transformers >= 0.3 && < 0.5+ transformers >= 0.3 && < 0.5,+ text >= 0.9 && < 1.2
src/Snap/Snaplet/RedisDB.hs view
@@ -20,10 +20,14 @@ import Control.Lens import Control.Monad.State -import Database.Redis+import Database.Redis hiding (String)+import Network (PortID(..)) import Network.Socket (PortNumber(..)) import Data.Configurator as C+import Data.Configurator.Types (Configured(..), Value(..)) import Data.Maybe+import Data.Ratio (numerator, denominator)+import qualified Data.Text as T import Snap.Snaplet @@ -37,6 +41,14 @@ makeLenses ''RedisDB ------------------------------------------------------------------------------+-- | Instance to allow port to be either a path to a unix socket or a+-- port number.+instance Configured PortID where+ convert (Number r) | denominator r == 1 = Just $ PortNumber $ PortNum $ fromInteger $ numerator r+ convert (String s) = Just $ UnixSocket $ T.unpack s+ convert _ = Nothing++------------------------------------------------------------------------------ -- | A lens to retrieve the connection to Redis from the 'RedisDB' -- wrapper. redisConnection :: Simple Lens RedisDB Connection@@ -71,6 +83,20 @@ -- > max_idle_time = 0.5 -- > } --+-- Alternately, you can configure it to connect via a socket, for example:+--+-- > redis {+-- > port = "/var/run/redis/redis.sock"+-- > }+--+-- This corresponds to setting:+--+-- > connectPort = UnixSocket "/var/run/redis/redis.sock"+--+-- in `ConnectInfo`. In this case, the host setting, if anything, is+-- ignored.+--+-- -- > appInit :: SnapletInit MyApp MyApp -- > appInit = makeSnaplet "app" "App with Redis child snaplet" Nothing $ -- > do@@ -89,8 +115,7 @@ let def = defaultConnectInfo return $ def { connectHost = fromMaybe (connectHost def) cHost- , connectPort =- maybe (connectPort def) (PortNumber . PortNum) cPort+ , connectPort = fromMaybe (connectPort def) cPort , connectAuth = cAuth , connectMaxConnections = fromMaybe (connectMaxConnections def) cCons