{"action":"created","issue":{"url":"https://api.github.com/repos/gbin/err/issues/508","labels_url":"https://api.github.com/repos/gbin/err/issues/508/labels{/name}","comments_url":"https://api.github.com/repos/gbin/err/issues/508/comments","events_url":"https://api.github.com/repos/gbin/err/issues/508/events","html_url":"https://github.com/gbin/err/pull/508","id":112734383,"number":508,"title":"WIP: Redis implemented and tested","user":{"login":"jamesob","id":73197,"avatar_url":"https://avatars.githubusercontent.com/u/73197?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesob","html_url":"https://github.com/jamesob","followers_url":"https://api.github.com/users/jamesob/followers","following_url":"https://api.github.com/users/jamesob/following{/other_user}","gists_url":"https://api.github.com/users/jamesob/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesob/subscriptions","organizations_url":"https://api.github.com/users/jamesob/orgs","repos_url":"https://api.github.com/users/jamesob/repos","events_url":"https://api.github.com/users/jamesob/events{/privacy}","received_events_url":"https://api.github.com/users/jamesob/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-10-22T05:34:53Z","updated_at":"2015-10-22T06:27:34Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/gbin/err/pulls/508","html_url":"https://github.com/gbin/err/pull/508","diff_url":"https://github.com/gbin/err/pull/508.diff","patch_url":"https://github.com/gbin/err/pull/508.patch"},"body":"I've added a tested and working proof of concept for using Redis storage. The implementation is fairly simple; you provide redis config data in the `config.py`, then `ErrBot` injects a wrapped redis client into each plugin instance. The wrapped client automatically namespaces based on the plugin classname.\r\n\r\nObviously there's a bit more polish to do here in terms of doc, but I can start on that if you like the approach in general."},"comment":{"url":"https://api.github.com/repos/gbin/err/issues/comments/150121593","html_url":"https://github.com/gbin/err/pull/508#issuecomment-150121593","issue_url":"https://api.github.com/repos/gbin/err/issues/508","id":150121593,"user":{"login":"jamesob","id":73197,"avatar_url":"https://avatars.githubusercontent.com/u/73197?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesob","html_url":"https://github.com/jamesob","followers_url":"https://api.github.com/users/jamesob/followers","following_url":"https://api.github.com/users/jamesob/following{/other_user}","gists_url":"https://api.github.com/users/jamesob/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesob/subscriptions","organizations_url":"https://api.github.com/users/jamesob/orgs","repos_url":"https://api.github.com/users/jamesob/repos","events_url":"https://api.github.com/users/jamesob/events{/privacy}","received_events_url":"https://api.github.com/users/jamesob/received_events","type":"User","site_admin":false},"created_at":"2015-10-22T06:27:34Z","updated_at":"2015-10-22T06:27:34Z","body":"The existing persistence interface IMO is kind of rough -- inheritance (instead of composition) is clunky and harder to understand and test.\r\n\r\nIf we can discuss and agree on a better interface for dealing with multiple different storage mechanisms, I'm definitely willing to try implementing. I'm not wild about trying to write some kind of ultimate polyglot storage abstraction layer; the returns there diminish very quickly. I think we have to be honest with ourselves -- this is just a chatbot, and the most important thing here IMO is simplicity and ease of use. I absolutely agree that we should come up with an interface that plugin writers can rely on, but like I said, I don't want to overengineer."}}