io_shuten 0.0.1.dev3 → 0.0.1.dev4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.rdoc_options ADDED
@@ -0,0 +1,20 @@
1
+ --- !ruby/object:RDoc::Options
2
+ encoding: UTF-8
3
+ static_path: []
4
+ rdoc_include:
5
+ - "README.md"
6
+ - "lib/**/*.rb"
7
+ charset: UTF-8
8
+ exclude:
9
+ force_output: true
10
+ force_update: true
11
+ hyperlink_all: false
12
+ line_numbers: true
13
+ main_page: "README.md"
14
+ markup: rdoc
15
+ op_dir: doc
16
+ show_hash: false
17
+ tab_width: 2
18
+ title: "IO::shuten 【五百::終点】"
19
+ visibility: :protected
20
+ webcvs:
data/.yardoc/checksums ADDED
@@ -0,0 +1,5 @@
1
+ lib/io_shuten.rb 4aa27c4e6f67fc666a1f8ed61b6cc6a9cd7f08d3
2
+ lib/io_shuten/base.rb fe06f9d82d6cf2c0eec94312fa7e5eab221fdacd
3
+ lib/io_shuten/mongo.rb 493851f95e94e2b0b6c805e63452e86a0d7eb624
4
+ lib/io_shuten/redis.rb 5a9fb88ca56df048bbfea7bcc114db5e5c9e54b7
5
+ lib/io_shuten/version.rb 6cf0a70de0c812e4b08661bfa445e2bff87ad190
Binary file
Binary file
data/.yardopts ADDED
@@ -0,0 +1,4 @@
1
+ --title 'IO::shuten 【五百::終点】'
2
+ --no-private
3
+ --plugin rspec
4
+ --plugin blame
data/Gemfile CHANGED
@@ -15,6 +15,12 @@ group :development, :test do
15
15
  gem "simplecov-rcov", :require => false
16
16
  gem "simplecov-csv", :require => false
17
17
 
18
+ gem "redcarpet"
19
+ gem "rdoc"
20
+ gem "yard"
21
+ gem "yard-rspec"
22
+ gem "yard-blame"
23
+
18
24
  gem "pry"
19
25
  gem "pry-doc"
20
26
  end
data/Gemfile.lock CHANGED
@@ -12,6 +12,7 @@ GEM
12
12
  bundler (~> 1.0)
13
13
  git (>= 1.2.5)
14
14
  rake
15
+ json (1.6.5)
15
16
  method_source (0.6.7)
16
17
  ruby_parser (>= 2.3.1)
17
18
  mongo (1.5.2)
@@ -26,6 +27,9 @@ GEM
26
27
  pry (>= 0.9.0)
27
28
  yard (>= 0.6.4)
28
29
  rake (0.9.2.2)
30
+ rdoc (3.12)
31
+ json (~> 1.4)
32
+ redcarpet (2.0.1)
29
33
  redis (2.2.2)
30
34
  rspec (2.8.0)
31
35
  rspec-core (~> 2.8.0)
@@ -48,6 +52,10 @@ GEM
48
52
  simplecov (>= 0.4.1)
49
53
  slop (2.1.0)
50
54
  yard (0.7.4)
55
+ yard-blame (0.0.1)
56
+ yard
57
+ yard-rspec (0.1)
58
+ yard
51
59
 
52
60
  PLATFORMS
53
61
  ruby
@@ -60,8 +68,13 @@ DEPENDENCIES
60
68
  pry
61
69
  pry-doc
62
70
  rake
71
+ rdoc
72
+ redcarpet
63
73
  redis (~> 2.2.2)
64
74
  rspec (~> 2.8.0)
65
75
  simplecov
66
76
  simplecov-csv
67
77
  simplecov-rcov
78
+ yard
79
+ yard-blame
80
+ yard-rspec
data/README.md CHANGED
@@ -34,6 +34,7 @@ In japanese `io` means *500* or *big amount*, `shū・ten` means *endpoint* (tra
34
34
 
35
35
  An in-memory storage system (handles simple StringIO objects).
36
36
 
37
+ Offers write-to-disk for single instance and all instances.
37
38
 
38
39
  ### IO_shuten::Redis
39
40
 
data/Rakefile CHANGED
@@ -7,6 +7,10 @@ require "jeweler"
7
7
  require "rspec"
8
8
  require "rspec/core/rake_task"
9
9
 
10
+ require 'rdoc/task'
11
+ require "yard"
12
+
13
+
10
14
  $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
11
15
  require "io_shuten/version"
12
16
 
@@ -50,6 +54,18 @@ end
50
54
 
51
55
 
52
56
 
57
+ RDoc::Task.new do |rdoc|
58
+ #rdoc.main = "README.md"
59
+ rdoc.rdoc_files.include("README.md", "lib/**/*.rb")
60
+ end
61
+
62
+ YARD::Rake::YardocTask.new do |t|
63
+ t.files = ['lib/**/*.rb']
64
+ #t.options = ['--any', '--extra', '--opts']
65
+ end
66
+
67
+
68
+
53
69
  desc "Starts IRB with env"
54
70
  task :irb do
55
71
  sh "irb -I lib -r io_shuten"
data/io_shuten.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "io_shuten"
8
- s.version = "0.0.1.dev3"
8
+ s.version = "0.0.1.dev4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Christoph Grabo"]
@@ -18,10 +18,15 @@ Gem::Specification.new do |s|
18
18
  "README.md"
19
19
  ]
20
20
  s.files = [
21
+ ".rdoc_options",
21
22
  ".rspec",
22
23
  ".rvmrc",
23
24
  ".simplecov",
24
25
  ".travis.yml",
26
+ ".yardoc/checksums",
27
+ ".yardoc/objects/root.dat",
28
+ ".yardoc/proxy_types",
29
+ ".yardopts",
25
30
  "Gemfile",
26
31
  "Gemfile.lock",
27
32
  "LICENSE",
@@ -60,6 +65,11 @@ Gem::Specification.new do |s|
60
65
  s.add_development_dependency(%q<simplecov>, [">= 0"])
61
66
  s.add_development_dependency(%q<simplecov-rcov>, [">= 0"])
62
67
  s.add_development_dependency(%q<simplecov-csv>, [">= 0"])
68
+ s.add_development_dependency(%q<redcarpet>, [">= 0"])
69
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
70
+ s.add_development_dependency(%q<yard>, [">= 0"])
71
+ s.add_development_dependency(%q<yard-rspec>, [">= 0"])
72
+ s.add_development_dependency(%q<yard-blame>, [">= 0"])
63
73
  s.add_development_dependency(%q<pry>, [">= 0"])
64
74
  s.add_development_dependency(%q<pry-doc>, [">= 0"])
65
75
  else
@@ -73,6 +83,11 @@ Gem::Specification.new do |s|
73
83
  s.add_dependency(%q<simplecov>, [">= 0"])
74
84
  s.add_dependency(%q<simplecov-rcov>, [">= 0"])
75
85
  s.add_dependency(%q<simplecov-csv>, [">= 0"])
86
+ s.add_dependency(%q<redcarpet>, [">= 0"])
87
+ s.add_dependency(%q<rdoc>, [">= 0"])
88
+ s.add_dependency(%q<yard>, [">= 0"])
89
+ s.add_dependency(%q<yard-rspec>, [">= 0"])
90
+ s.add_dependency(%q<yard-blame>, [">= 0"])
76
91
  s.add_dependency(%q<pry>, [">= 0"])
77
92
  s.add_dependency(%q<pry-doc>, [">= 0"])
78
93
  end
@@ -87,6 +102,11 @@ Gem::Specification.new do |s|
87
102
  s.add_dependency(%q<simplecov>, [">= 0"])
88
103
  s.add_dependency(%q<simplecov-rcov>, [">= 0"])
89
104
  s.add_dependency(%q<simplecov-csv>, [">= 0"])
105
+ s.add_dependency(%q<redcarpet>, [">= 0"])
106
+ s.add_dependency(%q<rdoc>, [">= 0"])
107
+ s.add_dependency(%q<yard>, [">= 0"])
108
+ s.add_dependency(%q<yard-rspec>, [">= 0"])
109
+ s.add_dependency(%q<yard-blame>, [">= 0"])
90
110
  s.add_dependency(%q<pry>, [">= 0"])
91
111
  s.add_dependency(%q<pry-doc>, [">= 0"])
92
112
  end
data/lib/io_shuten.rb CHANGED
@@ -1,11 +1,15 @@
1
1
  # encoding: utf-8
2
+
3
+ # Namespace of the IO implementations
2
4
  module IO_shuten; end
3
5
 
4
6
  require "io_shuten/base"
5
7
  require "io_shuten/redis"
6
8
  require "io_shuten/mongo"
7
9
 
8
- # handy and short aliases
9
- IOM = IO::Mongo = IO_shuten::Mongo
10
- IOR = IO::Redis = IO_shuten::Redis
10
+ # IO::Mongo for a more intuitive usage
11
+ IO::Mongo = IO_shuten::Mongo
12
+
13
+ # IO::Redis for a more intuitive usage
14
+ IO::Redis = IO_shuten::Redis
11
15
 
@@ -1,21 +1,53 @@
1
1
  # encoding: utf-8
2
+
2
3
  module IO_shuten
4
+ # IO_shuten::Base is the in-memory implementation and parent class for other implementations.
3
5
  class Base
4
6
 
7
+ # Exception if a node object was not found
5
8
  class NodeNotFoundError < StandardError; end
6
- class NodeNameError < StandardError; end
7
- class NotImplementedYet < StandardError; end
9
+ # Exception if the node object name was of wrong type
10
+ class NodeNameError < StandardError; end
11
+ # Exception if file was not found
12
+ class FileNotFoundError < StandardError; end
13
+ # Exception if something went wrong on file handling
14
+ class FileAccessError < StandardError; end
15
+ # Exception for not yet implemented methods (stubs)
16
+ class NotYetImplemented < StandardError
17
+ # @private
18
+ def initialize callee = nil, pos = nil
19
+ msg = if callee
20
+ "Method :#{callee} is not (yet) supported. #{pos ? ''+pos+'' : ''}"
21
+ else
22
+ "The method is not (yet) supported."
23
+ end
24
+ super msg
25
+ end
26
+ end
8
27
 
28
+ # Storage of current Base instances of the running process
29
+ # @return [Array]
9
30
  @@instances = []
10
31
 
11
- attr_reader :object_name
12
- attr :container, :container_size
13
-
32
+ # Name of current node instance
33
+ # @return [String]
34
+ attr_reader :object_name
35
+
36
+ # holds StringIO object
37
+ # @return [StringIO]
38
+ attr :container
39
+
40
+ # Creates a new Base object and stores it in the pool
41
+ #
42
+ # @param [String] object_name Name of the node object (container)
43
+ # @param [Symbol] object_name also a symbol is allowed
44
+ # @param *args (not used)
45
+ # @return [Base]
46
+ # @raise [NodeNameError]
14
47
  def initialize(object_name = nil, *args)
15
48
  if [String,Symbol,NilClass].include?(object_name.class)
16
49
  @object_name = object_name
17
50
  @container = StringIO.new("","w+")
18
- @container_size = @container.size
19
51
 
20
52
  @@instances << self unless @@instances.include?(self)
21
53
  else
@@ -25,14 +57,24 @@ module IO_shuten
25
57
 
26
58
  class << self
27
59
 
60
+ # @return [Array] current instances
28
61
  def instances
29
62
  @@instances
30
63
  end
31
64
 
32
- def purge_instances
65
+ # Deletes ALL instances in the pool!
66
+ #
67
+ # @return [Boolean]
68
+ def purge_instances!
33
69
  @@instances = []
70
+ true
34
71
  end
35
72
 
73
+ # Deletes a single instance of the pool
74
+ #
75
+ # @param [Base] object
76
+ # @param [String] name of object as String
77
+ # @param [Symbol] name of object as Symbol
36
78
  def delete_instance object_name_or_instance
37
79
  @@instances.delete_if do |object|
38
80
  (object_name_or_instance.is_a?(Symbol) && object.object_name == object_name_or_instance) ||
@@ -41,12 +83,16 @@ module IO_shuten
41
83
  end
42
84
  end
43
85
 
86
+ # @return [Base] itself on success if no block was given
87
+ # @return [Boolean] true on success if block was given
88
+ # @raise [NodeNotFoundError]
44
89
  def open object_name, *args
45
90
  if Base.exists? object_name
46
91
  if block_given?
47
92
  base = Base.send :load, object_name
48
93
  yield(base)
49
94
  base.close
95
+ true
50
96
 
51
97
  else
52
98
  Base.send :load, object_name
@@ -57,13 +103,16 @@ module IO_shuten
57
103
  end
58
104
  end
59
105
 
60
- def exists? object_name
106
+ # @return [Boolean]
107
+ def exists? o_name = nil
108
+ o_name ||= self.object_name
61
109
  false
62
110
  end
63
111
  alias_method :exist?, :exists?
64
112
 
65
113
  private
66
114
 
115
+ # @private
67
116
  def load object_name
68
117
  obj = Base.new object_name
69
118
  obj.string ""
@@ -73,23 +122,68 @@ module IO_shuten
73
122
 
74
123
  end
75
124
 
76
- def respond_to_missing? sym, include_private = true
77
- unless object_respond_to?(sym, include_private)
78
- raise NotImplementedYet, "Method :#{sym} is not (yet) supported by #{self.class} or #{self.container.class}."
125
+ ### instance methods
126
+
127
+ # @return [Base] itself on success
128
+ # @raise [FileNotFoundError]
129
+ def load_from_file file_name = nil
130
+ file_name ||= self.object_name
131
+ if file_exists? file_name
132
+ self.container.string = File.read(file_name)
133
+ self
79
134
  else
80
- true
135
+ raise FileNotFoundError, self.object_name
136
+ end
137
+ end
138
+
139
+ # @return [Base] itself on success
140
+ # @raise [FileAccessError]
141
+ def save_to_file file_name = nil
142
+ file_name ||= self.object_name
143
+ begin
144
+ File.open(file_name, 'w') do |fh|
145
+ fh.write(self.container.string)
146
+ end
147
+ self
148
+ rescue Exception => e
149
+ raise FileAccessError, "Reason: #{e.message}"
150
+ end
151
+ end
152
+
153
+ # @return [Boolean]
154
+ def file_exists? file_name = nil
155
+ file_name ||= self.object_name
156
+ File.exists?(file_name)
157
+ end
158
+ alias_method :file_exist?, :file_exists?
159
+
160
+ # @private
161
+ def respond_to? sym
162
+ !!self.methods.include?(sym) || respond_to_missing?(sym)
163
+ end
164
+
165
+ # @private
166
+ def respond_to_missing? sym, include_private = true
167
+ !!container_respond_to?(sym, include_private)
168
+ end
169
+
170
+ # @private
171
+ def method_missing method, *args, &block
172
+ if respond_to_missing? method
173
+ @container.send method, *args, &block
81
174
  end
82
175
  end
83
176
 
84
177
  private
85
178
 
86
- def object_respond_to? sym, include_private
87
- @container.respond_to? sym, include_private
179
+ # @private
180
+ def not_yet_implemented! callee = nil, pos = nil
181
+ raise NotYetImplemented, callee, pos
88
182
  end
89
183
 
90
- def set_object_content object_content
91
- @container.string = object_content.to_s
92
- @container_size = @container.size
184
+ # @private
185
+ def container_respond_to? sym, include_private
186
+ @container.respond_to? sym, include_private
93
187
  end
94
188
 
95
189
  end
@@ -1,5 +1,9 @@
1
1
  # encoding: utf-8
2
+
2
3
  module IO_shuten
4
+ # Implementation of the MongoDB storage
5
+ #
6
+ # @todo Needs two backends (default database interface and GridFS)!
3
7
  class Mongo < IO_shuten::Base
4
8
 
5
9
  end
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
+
2
3
  module IO_shuten
4
+ # Implementation of the Redis storage
3
5
  class Redis < IO_shuten::Base
4
6
 
5
7
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
2
  module IO_shuten
3
- VERSION = [0,0,1,'dev3'].join('.')
3
+ # @private
4
+ VERSION = [0,0,1,'dev4'].join('.')
4
5
  end
@@ -4,7 +4,12 @@ require "logger"
4
4
 
5
5
  describe "Logger" do
6
6
  it "accepts an IO_shuten::Base as logdev" do
7
- logdev = IO_shuten::Base.new("logdev")
7
+ logdev = IO_shuten::Base.new(:logdev)
8
8
  logger = Logger.new(logdev)
9
+ logger.info "Foo log."
10
+ logger.info "Test message."
11
+ logger.info "Bar log."
12
+
13
+ logdev.string.should =~ /Test message/
9
14
  end
10
15
  end
@@ -35,16 +35,16 @@ describe Base do
35
35
  end
36
36
 
37
37
  describe "class based memory storage" do
38
- describe :purge_instances do
38
+ describe :purge_instances! do
39
39
  it "purges all instances" do
40
- Base.purge_instances
40
+ Base.purge_instances!
41
41
  Base.instances.should have(0).items
42
42
  end
43
43
  end
44
44
 
45
45
  describe :instances do
46
46
  it "retrieves all @@instances" do
47
- Base.purge_instances
47
+ Base.purge_instances!
48
48
  objects = %w[first second last]
49
49
  objects.each do |object_name|
50
50
  Base.new(object_name)
@@ -56,7 +56,7 @@ describe Base do
56
56
 
57
57
  describe :delete_instance do
58
58
  before do
59
- Base.purge_instances
59
+ Base.purge_instances!
60
60
  @object_names = %w[first second last]
61
61
  @objects = @object_names.inject([]) do |store, object_name|
62
62
  store << Base.new(object_name)
@@ -75,7 +75,7 @@ describe Base do
75
75
  end
76
76
 
77
77
  it "removes an instance by symbolized name from store" do
78
- Base.purge_instances
78
+ Base.purge_instances!
79
79
  @object_names = %w[first second last].map(&:to_sym)
80
80
  @objects = @object_names.inject([]) do |store, object_name|
81
81
  store << Base.new(object_name)
@@ -86,12 +86,55 @@ describe Base do
86
86
  end
87
87
 
88
88
  end
89
- end
89
+
90
+ describe "batch tasks" do
91
+
92
+ before do
93
+ Base.purge_instances!
94
+
95
+ @tmp_path = File.expand_path("../../../tmp", __FILE__)
96
+
97
+ Dir.mkdir(@tmp_path) unless File.exists?(@tmp_path)
98
+
99
+ example_content = "This is a dummy file!"
100
+
101
+ @file_names = %w[file1 file2 file3]
102
+
103
+ @file_names.each do |file_name|
104
+ File.open("#{@tmp_path}/#{file_name}",'w') do |fh|
105
+ fh.puts example_content
106
+ end
107
+ end
108
+ end
109
+
110
+ after do
111
+ @file_names.each do |file_name|
112
+ File.unlink("#{@tmp_path}/#{file_name}") if File.exists?("#{@tmp_path}/#{file_name}")
113
+ end
114
+ Base.purge_instances!
115
+ end
116
+
117
+ describe :save_instances do
118
+ it "writes all instances to disk" do
119
+ pending
120
+ end
121
+ end
122
+
123
+ describe :load_instances do
124
+ it "loads instances from disk" do
125
+ pending
126
+ end
127
+ end
128
+
129
+ end
130
+
131
+
132
+ end # class based memory storage
90
133
 
91
134
  describe :open do
92
135
 
93
136
  before do
94
- Base.purge_instances
137
+ Base.purge_instances!
95
138
  end
96
139
 
97
140
  context "without any args" do
@@ -128,16 +171,12 @@ describe Base do
128
171
 
129
172
  context "with name and block" do
130
173
  it "opens object, yields the block and closes object" do
131
-
174
+ pending
132
175
  end
133
176
  end
134
177
 
135
178
  end # open
136
179
 
137
- describe :close do
138
- it :TODO
139
- end
140
-
141
180
  end # Class Methods
142
181
 
143
182
  describe "Instance Methods" do
@@ -168,6 +207,118 @@ describe Base do
168
207
  end
169
208
  end
170
209
 
210
+ describe "method stub with #not_yet_implemented! call" do
211
+ it "raises NotYetImplemented" do
212
+ ios = Base.new
213
+ ios.instance_eval do
214
+ def not_implemented_method
215
+ not_yet_implemented! __method__, "#{__FILE__}:#{__LINE__}"
216
+ end
217
+ end
218
+ expect { ios.not_implemented_method }.to raise_error(Base::NotYetImplemented)
219
+ end
220
+ end
221
+
222
+ describe "loading and writing" do
223
+
224
+ before do
225
+ @tmp_path = File.expand_path("../../../tmp", __FILE__)
226
+ @tmp_true_file = "#{@tmp_path}/base.exist_true.txt"
227
+ @tmp_save_file = "#{@tmp_path}/base.save_true.txt"
228
+ @tmp_false_file = "#{@tmp_path}/base.exist_false.txt"
229
+ @denied_path = "/invalid_file.txt"
230
+
231
+ Dir.mkdir(@tmp_path) unless File.exists?(@tmp_path)
232
+ f = File.new(@tmp_true_file,'w')
233
+ f.puts("true content")
234
+ f.close
235
+ end
236
+
237
+ after do
238
+ File.unlink(@tmp_true_file)
239
+ File.unlink(@tmp_save_file) if File.exists?(@tmp_save_file)
240
+ Base.purge_instances!
241
+ end
242
+
243
+ describe :file_exists? do
244
+
245
+ it "returns true if path is a file" do
246
+ ios = Base.new(@tmp_true_file)
247
+ ios.file_exists?.should be_true
248
+ end
249
+
250
+ it "returns true if custom path is a file" do
251
+ ios = Base.new(:different_name)
252
+ ios.file_exists?(@tmp_true_file).should be_true
253
+ end
254
+
255
+ it "returns false if path is not a file" do
256
+ ios = Base.new(@tmp_false_file)
257
+ ios.file_exists?.should be_false
258
+ end
259
+
260
+ end
261
+
262
+ describe :load_from_file do
263
+
264
+ context "file exists" do
265
+
266
+ it "reads file and stores content into container" do
267
+ ios = Base.new(@tmp_true_file)
268
+ ios.load_from_file.should be_true
269
+ ios.string.should =~ /true content/
270
+ end
271
+
272
+ it "reads file with custom name" do
273
+ ios = Base.new(:different_name)
274
+ ios.load_from_file(@tmp_true_file).should be_true
275
+ ios.string.should =~ /content/
276
+ end
277
+
278
+ end
279
+
280
+ context "file does not exist" do
281
+ it "raises FileNotFoundError" do
282
+ ios = Base.new(@tmp_false_file)
283
+ expect { ios.load_from_file }.to raise_error(Base::FileNotFoundError)
284
+ end
285
+ end
286
+
287
+ end
288
+
289
+ describe :save_to_file do
290
+
291
+ context "file path accessible" do
292
+ context "with container name as default" do
293
+ it "writes container into the file" do
294
+ ios = Base.new(@tmp_save_file)
295
+ ios.puts = "Test string"
296
+ ios.save_to_file.should be_true
297
+ end
298
+ end
299
+
300
+ context "with custom name" do
301
+ it "writes container into the file" do
302
+ ios = Base.new(:different_name)
303
+ ios.puts = "Test string"
304
+ ios.save_to_file(@tmp_save_file).should be_true
305
+ end
306
+ end
307
+
308
+ end
309
+
310
+ context "path not accessible" do
311
+ it "raises FileAccessError with corresponding reason" do
312
+ ios = Base.new(@denied_path)
313
+ ios.puts = "Test string"
314
+ expect { ios.save_to_file }.to raise_error(Base::FileAccessError, /Reason/)
315
+ end
316
+ end
317
+
318
+ end
319
+
320
+ end # loading and writing
321
+
171
322
  end
172
323
 
173
324
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: io_shuten
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.dev3
4
+ version: 0.0.1.dev4
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hiredis
16
- requirement: &23011240 !ruby/object:Gem::Requirement
16
+ requirement: &21837220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.4.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *23011240
24
+ version_requirements: *21837220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: redis
27
- requirement: &23010760 !ruby/object:Gem::Requirement
27
+ requirement: &21834920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.2.2
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *23010760
35
+ version_requirements: *21834920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bson_ext
38
- requirement: &23010280 !ruby/object:Gem::Requirement
38
+ requirement: &21849760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.5.2
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *23010280
46
+ version_requirements: *21849760
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mongo
49
- requirement: &23009800 !ruby/object:Gem::Requirement
49
+ requirement: &21847480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.5.2
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *23009800
57
+ version_requirements: *21847480
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &23009320 !ruby/object:Gem::Requirement
60
+ requirement: &21845600 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *23009320
68
+ version_requirements: *21845600
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &23008840 !ruby/object:Gem::Requirement
71
+ requirement: &21844520 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *23008840
79
+ version_requirements: *21844520
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &23008360 !ruby/object:Gem::Requirement
82
+ requirement: &22283120 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 2.8.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *23008360
90
+ version_requirements: *22283120
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: simplecov
93
- requirement: &23007880 !ruby/object:Gem::Requirement
93
+ requirement: &22281600 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *23007880
101
+ version_requirements: *22281600
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: simplecov-rcov
104
- requirement: &23007400 !ruby/object:Gem::Requirement
104
+ requirement: &22279920 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *23007400
112
+ version_requirements: *22279920
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: simplecov-csv
115
- requirement: &23006920 !ruby/object:Gem::Requirement
115
+ requirement: &22277620 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,65 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *23006920
123
+ version_requirements: *22277620
124
+ - !ruby/object:Gem::Dependency
125
+ name: redcarpet
126
+ requirement: &22275260 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *22275260
135
+ - !ruby/object:Gem::Dependency
136
+ name: rdoc
137
+ requirement: &22290240 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *22290240
146
+ - !ruby/object:Gem::Dependency
147
+ name: yard
148
+ requirement: &22288860 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *22288860
157
+ - !ruby/object:Gem::Dependency
158
+ name: yard-rspec
159
+ requirement: &22287200 !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: *22287200
168
+ - !ruby/object:Gem::Dependency
169
+ name: yard-blame
170
+ requirement: &22285220 !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: *22285220
124
179
  - !ruby/object:Gem::Dependency
125
180
  name: pry
126
- requirement: &23006440 !ruby/object:Gem::Requirement
181
+ requirement: &22284360 !ruby/object:Gem::Requirement
127
182
  none: false
128
183
  requirements:
129
184
  - - ! '>='
@@ -131,10 +186,10 @@ dependencies:
131
186
  version: '0'
132
187
  type: :development
133
188
  prerelease: false
134
- version_requirements: *23006440
189
+ version_requirements: *22284360
135
190
  - !ruby/object:Gem::Dependency
136
191
  name: pry-doc
137
- requirement: &23005960 !ruby/object:Gem::Requirement
192
+ requirement: &22297540 !ruby/object:Gem::Requirement
138
193
  none: false
139
194
  requirements:
140
195
  - - ! '>='
@@ -142,7 +197,7 @@ dependencies:
142
197
  version: '0'
143
198
  type: :development
144
199
  prerelease: false
145
- version_requirements: *23005960
200
+ version_requirements: *22297540
146
201
  description: IO::shuten – Use databases as IO handler like you would do with files
147
202
  and streams.
148
203
  email:
@@ -154,10 +209,15 @@ extra_rdoc_files:
154
209
  - LICENSE.de
155
210
  - README.md
156
211
  files:
212
+ - .rdoc_options
157
213
  - .rspec
158
214
  - .rvmrc
159
215
  - .simplecov
160
216
  - .travis.yml
217
+ - .yardoc/checksums
218
+ - .yardoc/objects/root.dat
219
+ - .yardoc/proxy_types
220
+ - .yardopts
161
221
  - Gemfile
162
222
  - Gemfile.lock
163
223
  - LICENSE
@@ -190,7 +250,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
190
250
  version: '0'
191
251
  segments:
192
252
  - 0
193
- hash: 2524218372988733480
253
+ hash: -2605549533017634266
194
254
  required_rubygems_version: !ruby/object:Gem::Requirement
195
255
  none: false
196
256
  requirements: