basiccache 0.0.29 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/LICENSE +1 -1
  4. data/README.md +115 -53
  5. data/basiccache.gemspec +1 -1
  6. data/lib/basiccache.rb +0 -1
  7. data/lib/caches/cache.rb +0 -2
  8. data/lib/caches/timecache.rb +0 -2
  9. data/lib/methodcacher.rb +0 -1
  10. data/lib/stores/store.rb +0 -1
  11. data/spec/methodcacher_spec.rb +0 -1
  12. metadata +22 -49
  13. data/Gemfile.lock +0 -69
  14. data/vendor/cache/ast-1.1.0.gem +0 -0
  15. data/vendor/cache/coveralls-0.7.0.gem +0 -0
  16. data/vendor/cache/diff-lcs-1.2.5.gem +0 -0
  17. data/vendor/cache/docile-1.1.1.gem +0 -0
  18. data/vendor/cache/fuubar-1.3.2.gem +0 -0
  19. data/vendor/cache/hashr-0.0.22.gem +0 -0
  20. data/vendor/cache/mime-types-2.0.gem +0 -0
  21. data/vendor/cache/multi_json-1.8.2.gem +0 -0
  22. data/vendor/cache/parser-2.1.1.gem +0 -0
  23. data/vendor/cache/powerpack-0.0.9.gem +0 -0
  24. data/vendor/cache/rainbow-1.99.1.gem +0 -0
  25. data/vendor/cache/rake-10.1.1.gem +0 -0
  26. data/vendor/cache/rest-client-1.6.7.gem +0 -0
  27. data/vendor/cache/rspec-2.14.1.gem +0 -0
  28. data/vendor/cache/rspec-core-2.14.7.gem +0 -0
  29. data/vendor/cache/rspec-expectations-2.14.4.gem +0 -0
  30. data/vendor/cache/rspec-mocks-2.14.4.gem +0 -0
  31. data/vendor/cache/rubocop-0.16.0.gem +0 -0
  32. data/vendor/cache/ruby-progressbar-1.4.0.gem +0 -0
  33. data/vendor/cache/simplecov-0.8.2.gem +0 -0
  34. data/vendor/cache/simplecov-html-0.8.0.gem +0 -0
  35. data/vendor/cache/slop-3.4.7.gem +0 -0
  36. data/vendor/cache/term-ansicolor-1.2.2.gem +0 -0
  37. data/vendor/cache/thor-0.18.1.gem +0 -0
  38. data/vendor/cache/tins-0.13.1.gem +0 -0
  39. data/vendor/cache/travis-lint-1.7.0.gem +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c88870ec2b5d57202f9851f3ff291dc1dcedf952
4
- data.tar.gz: e3e84d6cb07215b2236f64f62b285b61a0d6b740
3
+ metadata.gz: 0a49be3db84d2126fa39a6836c55ec560f0a3db8
4
+ data.tar.gz: 6b3a772fcd807e71442f17b790f951fa96ac78da
5
5
  SHA512:
6
- metadata.gz: 69951405a0cc35f09fdfdfde6ec4b47bc90df9892be07e95fe8dace3a8c1d4a0421b7d7335ce2ab6fba0bb7a747415d93c164dede3a50d43e93262cebe022d90
7
- data.tar.gz: 195d0ac05209ba4a9b59225584a1998cbf86980a8cc9a04444a0b304102dbf554de21919db1ef12e31e2a46f705372ab001f0d8216f6ca4d962110bc2b1bf59f
6
+ metadata.gz: 1cd94168231bcf330a6f5c878b05da48181b0df67287640eadfe7ba9b22b9437b405b480f5f64864f1e083c61d98531fa3fa92013079647f900199d63c8fc8b2
7
+ data.tar.gz: 13554660770b5dd53d1c4d30be3fb7f83a81cd077f63a77c64282bec33259b12b27478e3e88cf366f68aeef83c5e725a1feae21e0ce6624ed0ef9e82be363752
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ Gemfile.lock
1
2
  pkg/*.gem
2
3
  coverage/
3
4
  .coveralls.yml
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2013 Les Aker
3
+ Copyright (c) 2014 Les Aker
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,24 +1,35 @@
1
1
  BasicCache
2
2
  ========
3
3
 
4
- [![Gem Version](https://badge.fury.io/rb/basiccache.png)](https://badge.fury.io/rb/basiccache)
5
- [![Dependency Status](https://gemnasium.com/akerl/basiccache.png)](https://gemnasium.com/akerl/basiccache)
6
- [![Code Climate](https://codeclimate.com/github/akerl/basiccache.png)](https://codeclimate.com/github/akerl/basiccache)
7
- [![Coverage Status](https://coveralls.io/repos/akerl/basiccache/badge.png?branch=master)](https://coveralls.io/r/akerl/basiccache?branch=master)
8
- [![Build Status](https://travis-ci.org/akerl/basiccache.png?branch=master)](https://travis-ci.org/akerl/basiccache)
4
+ [![Gem Version](https://img.shields.io/gem/v/basiccache.svg)](https://rubygems.org/gems/basiccache)
5
+ [![Dependency Status](https://img.shields.io/gemnasium/akerl/basiccache.svg)](https://gemnasium.com/akerl/basiccache)
6
+ [![Code Climate](https://img.shields.io/codeclimate/github/akerl/basiccache.svg)](https://codeclimate.com/github/akerl/basiccache)
7
+ [![Coverage Status](https://img.shields.io/coveralls/akerl/basiccache.svg)](https://coveralls.io/r/akerl/basiccache)
8
+ [![Build Status](https://img.shields.io/travis/akerl/basiccache.svg)](https://travis-ci.org/akerl/basiccache)
9
+ [![MIT Licensed](https://img.shields.io/badge/license-MIT-green.svg)](https://tldrlegal.com/license/mit-license)
9
10
 
10
11
  Provides a minimal key/value caching layer
11
12
 
13
+ ## Installation
14
+
15
+ gem install basiccache
16
+
12
17
  ## Usage
13
18
 
14
- First, initialize a caching object:
19
+ BasicCache utilizes two different components to cache data:
20
+ * Stores, which are backends for holding keys and values
21
+ * Caches, which handle expiration logic
22
+
23
+ You can create a new default cache object using `BasicCache.new`:
15
24
 
16
25
  ```
17
26
  require 'basiccache'
18
27
  my_cache = BasicCache.new
19
28
  ```
20
29
 
21
- From then on, when you want to cache the results of some processing, just call my_cache.cache(key) with the processing block:
30
+ This uses the default Store and Cache object. The default Store is a Ruby hash, and the default Cache does not perform any automatic expiration of keys.
31
+
32
+ To store things in the cache and retrieve them, use `my_cache.cache` with a code block. When provided no argument, it will infer a key name using the calling method's name. If the key is stored, it will return it. If no key is stored, it will run the computation, store the result, and return it.
22
33
 
23
34
  ```
24
35
  require 'basiccache'
@@ -27,34 +38,103 @@ require 'benchmark'
27
38
  my_cache = BasicCache.new
28
39
 
29
40
  3.times do
30
- puts Benchmark.measure {
31
- my_cache.cache('foo') do
32
- (1..50_000).reduce { |acc, i| acc*i }
33
- end
34
- }
41
+ puts Benchmark.measure {
42
+ my_cache.cache('foo') do
43
+ (1..50_000).reduce { |acc, i| acc*i }
44
+ end
45
+ }
35
46
  end
36
47
  ```
37
48
 
38
49
  Results:
39
50
 
40
51
  ```
41
- # ruby example.rb
42
- 1.690000 0.000000 1.690000 ( 1.698418)
43
- 0.000000 0.000000 0.000000 ( 0.000011)
44
- 0.000000 0.000000 0.000000 ( 0.000005)
52
+ 1.730000 0.020000 1.750000 ( 1.752766)
53
+ 0.000000 0.000000 0.000000 ( 0.000014)
54
+ 0.000000 0.000000 0.000000 ( 0.000008)
45
55
  ```
46
56
 
47
- To clear the cache, call .clear!:
57
+ To clear the cache, call `.clear!`. Calling `.clear!(key)` will remove only that key:
48
58
 
49
59
  ```
60
+ require 'basiccache'
61
+
50
62
  my_cache = BasicCache.new
51
63
 
52
- # do stuff
64
+ (1..10).each { |i| my_cache.cache(i) { i+10 } }
65
+
66
+ puts my_cache.size
67
+
68
+ my_cache.clear! 3
69
+ puts my_cache.size
53
70
 
54
71
  my_cache.clear!
72
+ puts my_cache.size
73
+ ```
74
+
75
+ Results:
76
+
77
+ ```
78
+ 10
79
+ 9
80
+ 0
81
+ ```
82
+
83
+ ### Important Note About Keys
84
+
85
+ BasicCache attempts to guess the key name from the stack by looking for the name of the method that called it. This is convenient for most use cases, but if you're using metaprogramming or nested code blocks, this can cause that method name to be "block (2 levels) in \<top (required)>" or similar. In this case, keys can conflict and give back weird results. The fix is for you to manually specify your own keys to .cache calls.
86
+
87
+ ### Using other Caches
88
+
89
+ In addition to the default Cache object, BasicCache also provides TimeCache, which expires keys after a given lifetime. It can be created similarly to the default Cache, and used identically. The lifetime can be provided, or the default of 60 seconds is used.
90
+
91
+ ```
92
+ require 'basiccache'
93
+
94
+ my_cache = BasicCache::TimeCache.new(lifetime: 3)
95
+
96
+ my_cache.cache('foo') { (1..50_000).reduce { |acc, i| acc*i } }
97
+
98
+ puts my_cache.size
99
+ sleep 5
100
+ puts my_cache.size
101
+ ```
102
+
103
+ Results:
104
+
105
+ ```
106
+ 1
107
+ 0
55
108
  ```
56
109
 
57
- The .clear! method can be passed a key name to clear just a specific key, as well.
110
+ ### Using other Stores
111
+
112
+ Store backends can be provided to a Cache object when it is created via the `:store` parameter. BasicCache implements only the default Store, but [RedisStore](https://github.com/akerl/redisstore) is an example of an alternate Store class.
113
+
114
+ ```
115
+ require 'basiccache'
116
+ require 'redisstore'
117
+ require 'benchmark'
118
+
119
+ my_store = RedisStore.new
120
+ my_cache = BasicCache.new(store: my_store)
121
+
122
+ 3.times do
123
+ puts Benchmark.measure {
124
+ my_cache.cache('bar') do
125
+ (1..50_000).reduce { |acc, i| acc*i }
126
+ end
127
+ }
128
+ end
129
+ ```
130
+
131
+ Results:
132
+
133
+ ```
134
+ 0.000000 0.000000 0.000000 ( 0.001434)
135
+ 0.000000 0.000000 0.000000 ( 0.000294)
136
+ 0.000000 0.000000 0.000000 ( 0.000207)
137
+ ```
58
138
 
59
139
  ### MethodCacher
60
140
 
@@ -104,43 +184,25 @@ class Foo
104
184
  end
105
185
  ```
106
186
 
107
- ## Subclasses
108
-
109
- ### TimeCache
110
-
111
- This cache behaves similarly, with the addition of a lifetime attribute.
112
-
113
- When creating a new cache object, provide a lifetime or use the default of 30 seconds:
114
-
115
- ```
116
- default_cache = BasicCache::TimeCache.new
117
- puts "Default Lifetime: #{default_cache.lifetime}"
118
-
119
- custom_cache = BasicCache::TimeCache.new(3)
120
- puts "Default Lifetime: #{custom_cache.lifetime}"
121
-
122
- custom_cache.cache('test') { "fish" }
123
- puts "Does the cache include 'test'? #{custom_cache.include? 'test'}"
124
- sleep 5
125
- puts "Does the cache include 'test' now? #{custom_cache.include? 'test'}"
126
- ```
127
-
128
- This returns the following:
129
-
130
- ```
131
- Default Lifetime: 30
132
- Default Lifetime: 3
133
- Does the cache include 'test'? true
134
- Does the cache include 'test' now? false
135
- ```
136
-
137
- ## Important Note About Keys
187
+ ## Extending BasicCache
138
188
 
139
- BasicCache attempts to guess the key name from the stack by looking for the name of the method that called it. This is convenient for most use cases, but if you're using metaprogramming or nested code blocks, this can cause that method name to be "block (2 levels) in \<top (required)>" or similar. In this case, keys can conflict and give back weird results. The fix is for you to manually specify your own keys to .cache calls.
189
+ Creating your own Cache or Store is pretty simple. These are the required methods that each needs to provide:
140
190
 
141
- ## Installation
191
+ Cache:
192
+ * `.size()` -> Size of the cache as an integer. Expired/invalid keys should not count towards this.
193
+ * `.cache(key = nil, &block)` -> If key exists, return stored value; if not, run block, store value, and return it. If no key is provided, use BasicCache.caller_name to infer one.
194
+ * `.include?(key = nil)` -> Return boolean indicating presence of key in Cache. Expired/invalid keys should return false. If no key is provided, use BasicCache.caller_name to infer one.
195
+ * `.[](key)` -> Return value if key is cached, else return KeyError
196
+ * `.clear!(key = nil)` -> With no key, clear the whole cache and return {}. With a key, clear that key and return the value it had.
197
+ * `.prune()` -> Prune expired/invalid keys from the store. Return any pruned keys.
142
198
 
143
- gem install basiccache
199
+ Store:
200
+ * `.clear!(key = nil)` -> With no key, clear the whole cache and return {}. With a key, clear that key and return the value it had.
201
+ * `.[](key)` -> Return the value stored for the given key if it exists, else return KeyError.
202
+ * `.[]=(key, value)` -> Store the given value with the given key, and return the value.
203
+ * `.size()` -> Return the size of the store as an integer.
204
+ * `.include?(key)` -> Return a boolean indicating presence of the given key in the store.
205
+ * `.keys()` -> Return all keys in the store as an array.
144
206
 
145
207
  ## License
146
208
 
data/basiccache.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'basiccache'
3
- s.version = '0.0.29'
3
+ s.version = '0.1.0'
4
4
  s.date = Time.now.strftime("%Y-%m-%d")
5
5
  s.summary = 'Provides a minimal key/value caching layer'
6
6
  s.description = "Allows an application to dynamically cache values and retrieve them later"
data/lib/basiccache.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  ##
2
2
  # This module provides a simple key/value cache for storing computation results
3
-
4
3
  module BasicCache
5
4
  # Check if we're using a version if Ruby that supports caller_locations
6
5
  NEW_CALL = Kernel.respond_to? 'caller_locations'
data/lib/caches/cache.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  ##
2
2
  # Define the basic cache and default store objects
3
-
4
3
  module BasicCache
5
4
  ##
6
5
  # Set default Store type
@@ -9,7 +8,6 @@ module BasicCache
9
8
 
10
9
  ##
11
10
  # Cache object, maintains a key/value store
12
-
13
11
  class Cache
14
12
  attr_reader :store
15
13
 
@@ -1,6 +1,5 @@
1
1
  ##
2
2
  # Extends BasicCache to add a time-based cache
3
-
4
3
  module BasicCache
5
4
  ##
6
5
  # Timecache item struct, timestamp and value
@@ -9,7 +8,6 @@ module BasicCache
9
8
 
10
9
  ##
11
10
  # Time-based cache object
12
-
13
11
  class TimeCache < Cache
14
12
  attr_reader :lifetime
15
13
 
data/lib/methodcacher.rb CHANGED
@@ -2,7 +2,6 @@
2
2
  # Helper module for caching methods inside a class
3
3
  # To use, extend your class with MethodCacher
4
4
  # Then, in initialize, call enable_caching
5
-
6
5
  module MethodCacher
7
6
  ##
8
7
  # Enable caching for the listed methods
data/lib/stores/store.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  module BasicCache
2
2
  ##
3
3
  # Basic store object (uses a Hash)
4
-
5
4
  class Store
6
5
  attr_reader :raw
7
6
 
@@ -2,7 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  ##
4
4
  # Example class for testing method caching
5
-
6
5
  class Example
7
6
  include MethodCacher
8
7
 
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basiccache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.29
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-02 00:00:00.000000000 Z
11
+ date: 2014-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: travis-lint
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: coveralls
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: fuubar
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: parser
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: Allows an application to dynamically cache values and retrieve them later
@@ -114,12 +114,11 @@ executables: []
114
114
  extensions: []
115
115
  extra_rdoc_files: []
116
116
  files:
117
- - .gitignore
118
- - .rspec
119
- - .rubocop.yml
120
- - .travis.yml
117
+ - ".gitignore"
118
+ - ".rspec"
119
+ - ".rubocop.yml"
120
+ - ".travis.yml"
121
121
  - Gemfile
122
- - Gemfile.lock
123
122
  - LICENSE
124
123
  - README.md
125
124
  - Rakefile
@@ -135,32 +134,6 @@ files:
135
134
  - spec/methodcacher_spec.rb
136
135
  - spec/spec_helper.rb
137
136
  - spec/stores/store_spec.rb
138
- - vendor/cache/ast-1.1.0.gem
139
- - vendor/cache/coveralls-0.7.0.gem
140
- - vendor/cache/diff-lcs-1.2.5.gem
141
- - vendor/cache/docile-1.1.1.gem
142
- - vendor/cache/fuubar-1.3.2.gem
143
- - vendor/cache/hashr-0.0.22.gem
144
- - vendor/cache/mime-types-2.0.gem
145
- - vendor/cache/multi_json-1.8.2.gem
146
- - vendor/cache/parser-2.1.1.gem
147
- - vendor/cache/powerpack-0.0.9.gem
148
- - vendor/cache/rainbow-1.99.1.gem
149
- - vendor/cache/rake-10.1.1.gem
150
- - vendor/cache/rest-client-1.6.7.gem
151
- - vendor/cache/rspec-2.14.1.gem
152
- - vendor/cache/rspec-core-2.14.7.gem
153
- - vendor/cache/rspec-expectations-2.14.4.gem
154
- - vendor/cache/rspec-mocks-2.14.4.gem
155
- - vendor/cache/rubocop-0.16.0.gem
156
- - vendor/cache/ruby-progressbar-1.4.0.gem
157
- - vendor/cache/simplecov-0.8.2.gem
158
- - vendor/cache/simplecov-html-0.8.0.gem
159
- - vendor/cache/slop-3.4.7.gem
160
- - vendor/cache/term-ansicolor-1.2.2.gem
161
- - vendor/cache/thor-0.18.1.gem
162
- - vendor/cache/tins-0.13.1.gem
163
- - vendor/cache/travis-lint-1.7.0.gem
164
137
  homepage: https://github.com/akerl/basiccache
165
138
  licenses:
166
139
  - MIT
@@ -171,12 +144,12 @@ require_paths:
171
144
  - lib
172
145
  required_ruby_version: !ruby/object:Gem::Requirement
173
146
  requirements:
174
- - - '>='
147
+ - - ">="
175
148
  - !ruby/object:Gem::Version
176
149
  version: '0'
177
150
  required_rubygems_version: !ruby/object:Gem::Requirement
178
151
  requirements:
179
- - - '>='
152
+ - - ">="
180
153
  - !ruby/object:Gem::Version
181
154
  version: '0'
182
155
  requirements: []
data/Gemfile.lock DELETED
@@ -1,69 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- basiccache (0.0.29)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- ast (1.1.0)
10
- coveralls (0.7.0)
11
- multi_json (~> 1.3)
12
- rest-client
13
- simplecov (>= 0.7)
14
- term-ansicolor
15
- thor
16
- diff-lcs (1.2.5)
17
- docile (1.1.1)
18
- fuubar (1.3.2)
19
- rspec (>= 2.14.0, < 3.1.0)
20
- ruby-progressbar (~> 1.3)
21
- hashr (0.0.22)
22
- mime-types (2.0)
23
- multi_json (1.8.2)
24
- parser (2.1.1)
25
- ast (~> 1.1)
26
- slop (~> 3.4, >= 3.4.5)
27
- powerpack (0.0.9)
28
- rainbow (1.99.1)
29
- rake (10.1.1)
30
- rest-client (1.6.7)
31
- mime-types (>= 1.16)
32
- rspec (2.14.1)
33
- rspec-core (~> 2.14.0)
34
- rspec-expectations (~> 2.14.0)
35
- rspec-mocks (~> 2.14.0)
36
- rspec-core (2.14.7)
37
- rspec-expectations (2.14.4)
38
- diff-lcs (>= 1.1.3, < 2.0)
39
- rspec-mocks (2.14.4)
40
- rubocop (0.16.0)
41
- parser (~> 2.1)
42
- powerpack (~> 0.0.6)
43
- rainbow (>= 1.1.4)
44
- ruby-progressbar (1.4.0)
45
- simplecov (0.8.2)
46
- docile (~> 1.1.0)
47
- multi_json
48
- simplecov-html (~> 0.8.0)
49
- simplecov-html (0.8.0)
50
- slop (3.4.7)
51
- term-ansicolor (1.2.2)
52
- tins (~> 0.8)
53
- thor (0.18.1)
54
- tins (0.13.1)
55
- travis-lint (1.7.0)
56
- hashr (~> 0.0.22)
57
-
58
- PLATFORMS
59
- ruby
60
-
61
- DEPENDENCIES
62
- basiccache!
63
- coveralls
64
- fuubar
65
- parser
66
- rake
67
- rspec
68
- rubocop
69
- travis-lint
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file