gkv 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f2467eb9e1eae31b24010118d048f02be7ef4ad
4
- data.tar.gz: 238c0c1b4a9accb2bab30f1533a4beaf94690fb7
3
+ metadata.gz: 174cf3ce2358008f146a194a0ce22e77e81b2064
4
+ data.tar.gz: b0ed3ba9d4acf07f219846638ebb00a68b76383c
5
5
  SHA512:
6
- metadata.gz: 628ca18afc81b505d2786f3c37b2f5e1fac9d2c6f81bcd10db673d586115d8477d3831ec5aa518afb6f6149a2bca2d96294987f3d06de45cf61e093a7c7c546e
7
- data.tar.gz: 5830828a11a1cf039ae6b47a28c4a6027fc37dd87ab7479e4441e59137c43a4014cba79ae73fbadf741f56ab239f1723ee34f863e0f39fe989fe2b7102f3dda6
6
+ metadata.gz: ea0d241aceabdb4e8ce126cddcb833827476c55bf5740d68ac8557d7f946988a8b6220a9f6d1939b51392b26ba189da5d6659df621cfd1643e6ac4d9d9434f81
7
+ data.tar.gz: ea7a7dae9e4aa1891d57eaaf2937ed37b8f2e81c6eff96b86ccab08ebed7dd7928e410baf6d5fc3f7100aa2dc0467af415c29946018c6757d9200bac76ce0299
data/.travis.yml CHANGED
@@ -2,3 +2,4 @@ language: ruby
2
2
  rvm:
3
3
  - 2.2.1
4
4
  before_install: gem install bundler -v 1.10.3
5
+
data/CODE_OF_CONDUCT.md CHANGED
@@ -1 +1,2 @@
1
1
  # [DWTFYW](http://www.wtfpl.net/)
2
+ # Also, don't be a dick.
data/README.md CHANGED
@@ -1,13 +1,17 @@
1
1
  # Gkv
2
2
  [![Join the chat at https://gitter.im/ybur-yug/gkv](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ybur-yug/gkv?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
3
+ <a href="https://codeclimate.com/github/ybur-yug/gkv"><img src="https://codeclimate.com/github/ybur-yug/gkv/badges/gpa.svg" /></a>
4
+ [![Gem Version](https://badge.fury.io/rb/gkv.svg)](http://badge.fury.io/rb/gkv)
5
+ [![Build Status](https://travis-ci.org/ybur-yug/gkv.svg?branch=master)](https://travis-ci.org/ybur-yug/gkv)
6
+
3
7
 
4
8
  Gkv is a simple git wrapper that allows you to use it as a kv store
5
9
 
6
10
  ![proof in our pudding](http://i.imgur.com/EKdt7oR.png)
7
11
 
8
- The documentation says thats what it does. So why not yo?
12
+ [![asciicast](https://asciinema.org/a/a157ouz4ju5cy9v5r3pexhj4k.png)](https://asciinema.org/a/a157ouz4ju5cy9v5r3pexhj4k)
9
13
 
10
- #### DO NOT use this in real software at its current state.
14
+ The documentation says thats what it does. So why not yo?
11
15
 
12
16
  #### This is the product of a [tutorial](https://github.com/ybur-yug/git_kv_store_tutorial) I wrote to explore git.
13
17
 
@@ -28,10 +32,21 @@ Or install it yourself as:
28
32
  $ gem install gkv
29
33
 
30
34
  ## API
35
+ Types are implicitly understood, and are automatically set/loaded. Only symbols are excluded.
31
36
  There are 4 main functions:
32
37
 
33
38
  ### Set
34
39
 
40
+ db[*key*] = *value*
41
+
42
+ ```ruby
43
+ db = Gkv::Database.new
44
+ db['Pants'] = 'red leather'
45
+ # => 'red leather'
46
+ ```
47
+ This allows a shorthand notation using operator overloading to set without invoking `set` directly.
48
+
49
+
35
50
  set(*key*, *value*)
36
51
 
37
52
  ```ruby
@@ -43,6 +58,17 @@ db.set('test', 12)
43
58
  ```
44
59
 
45
60
  ### Get
61
+
62
+ db[*key*]
63
+
64
+ ```ruby
65
+ db = Gkv::Database.new
66
+ db['Pants']
67
+ # => 'red leather'
68
+ ```
69
+ This allows a shorthand notation using operator overloading to get without invoking `get` directly.
70
+
71
+
46
72
  get(*key*)
47
73
 
48
74
  ```ruby
@@ -87,8 +113,6 @@ db.all
87
113
 
88
114
  ## Usage
89
115
 
90
- [![asciicast](https://asciinema.org/a/0ss6cqmm6yhnyvz88bdy37oiq.png)](https://asciinema.org/a/0ss6cqmm6yhnyvz88bdy37oiq)
91
-
92
116
  ```ruby
93
117
  db = Gkv::Database.new
94
118
 
data/bench.rb ADDED
@@ -0,0 +1,13 @@
1
+ require 'gkv'
2
+ require 'benchmark'
3
+
4
+ gkv = Gkv::Database.new
5
+
6
+ n = 1000
7
+
8
+ Benchmark.bm do |x|
9
+ x.report("set:\t\t") { n.times { gkv.set('Apple', 10) } }
10
+ x.report("hash set:\t") { n.times { gkv['Apple'] = 10 } }
11
+ x.report("get:\t\t") { n.times { gkv.get('Apple') } }
12
+ x.report("hash get:\t") { n.times { gkv['Apple'] } }
13
+ end
data/example/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Usage
2
+
3
+ ## Setup
4
+ Start the server
5
+
6
+ $ bundle
7
+ $ ruby server.rb
8
+
9
+ With this, in another terminal start IRB:
10
+
11
+ ```ruby
12
+ require 'net/http'
13
+ require 'uri'
14
+
15
+ set_uri = URI('http://localhost:4567/set')
16
+ get_uri = URI('http://localhost:4567/get')
17
+
18
+ set_params = { :key => 'your_key', :value => 'your value' }
19
+ get_params = { :key => 'your_key' }
20
+ set_uri.query = URI.encode_www_form(set_params)
21
+ get_uri.query = URI.encode_www_form(set_params)
22
+
23
+ set_resp = Net::HTTP.get(set_uri)
24
+ get_resp = Net::HTTP.get(get_uri)
25
+ puts set_resp
26
+ # => {"key_set":"your_key"}
27
+ puts get_resp
28
+ # => your value
29
+ ```
data/example/server.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'sinatra'
2
+ require 'json'
3
+ require 'gkv'
4
+
5
+ DB = Gkv::Database.new
6
+
7
+ get '/' do
8
+ { all_items: DB.all }.to_json
9
+ end
10
+
11
+ get '/set' do
12
+ begin
13
+ key, value = params.fetch('key'), params.fetch('value')
14
+ DB.set(key, value)
15
+ { key_set: key }.to_json
16
+ rescue KeyError
17
+ { error: 'error setting key/value pair, please send key and value params' }.to_json
18
+ end
19
+ end
20
+
21
+ get '/get' do
22
+ begin
23
+ key = params.fetch('key')
24
+ DB.get(key)
25
+ rescue KeyError
26
+ { error: 'error retrieving key. it either does not exist or you did not send a parameter `key`' }.to_json
27
+ end
28
+ end
data/lib/gkv/database.rb CHANGED
@@ -16,6 +16,10 @@ module Gkv
16
16
  key
17
17
  end
18
18
 
19
+ def []=(key, value)
20
+ set(key, value)
21
+ end
22
+
19
23
  def get(key)
20
24
  if $ITEMS.keys.include? key
21
25
  YAML.load(Gkv::GitFunctions.cat_file($ITEMS[key].last))
@@ -24,6 +28,10 @@ module Gkv
24
28
  end
25
29
  end
26
30
 
31
+ def [](key)
32
+ get(key)
33
+ end
34
+
27
35
  def get_version(version, key)
28
36
  YAML.load(Gkv::GitFunctions.cat_file($ITEMS[key][version.to_i - 1]))
29
37
  end
data/lib/gkv/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gkv
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gkv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - '='
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-25 00:00:00.000000000 Z
11
+ date: 2015-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -83,9 +83,12 @@ files:
83
83
  - LICENSE.txt
84
84
  - README.md
85
85
  - Rakefile
86
+ - bench.rb
86
87
  - bin/console
87
88
  - bin/gkv
88
89
  - bin/setup
90
+ - example/README.md
91
+ - example/server.rb
89
92
  - gkv.gemspec
90
93
  - lib/gkv.rb
91
94
  - lib/gkv/database.rb