packages feed

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