io_shuten 0.0.1.dev1 → 0.0.1.dev3
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/.travis.yml +8 -0
- data/README.md +32 -6
- data/Rakefile +2 -2
- data/io_shuten.gemspec +3 -2
- data/lib/io_shuten/base.rb +45 -26
- data/lib/io_shuten/version.rb +1 -1
- data/spec/examples/logger_spec.rb +1 -1
- data/spec/lib/base_spec.rb +92 -29
- metadata +28 -27
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
# IO::shuten
|
1
|
+
# IO::shuten 【五百::終点】 [](http://travis-ci.org/asaaki/io_shuten)
|
2
2
|
|
3
3
|
Use databases as IO handler like you would do with files and streams.
|
4
4
|
|
5
|
-
|
5
|
+
|
6
|
+
## Motivation
|
6
7
|
|
7
8
|
One purpose for creating this project is to have an IO like interface to database storages.
|
8
9
|
|
@@ -20,7 +21,31 @@ logger = Logger.new(logdev)
|
|
20
21
|
logger.info "This message will be stored in redis."
|
21
22
|
```
|
22
23
|
|
23
|
-
|
24
|
+
|
25
|
+
## IO::shuten? 【五百::終点】(io shūten)!
|
26
|
+
|
27
|
+
In japanese `io` means *500* or *big amount*, `shū・ten` means *endpoint* (train terminus/last stop or mathematical endpoint).
|
28
|
+
|
29
|
+
|
30
|
+
## Types
|
31
|
+
|
32
|
+
|
33
|
+
### IO_shuten::Base
|
34
|
+
|
35
|
+
An in-memory storage system (handles simple StringIO objects).
|
36
|
+
|
37
|
+
|
38
|
+
### IO_shuten::Redis
|
39
|
+
|
40
|
+
Stores content in a redis database.
|
41
|
+
|
42
|
+
|
43
|
+
### IO_shuten::Mongo
|
44
|
+
|
45
|
+
Stores content in a mongodb database.
|
46
|
+
|
47
|
+
|
48
|
+
## Not for production!
|
24
49
|
|
25
50
|
This project is freshly started and currently not usable.
|
26
51
|
|
@@ -28,7 +53,8 @@ Everything can and maybe will change.
|
|
28
53
|
|
29
54
|
Feel free to contribute, write issues if you want to support me with your ideas and insights.
|
30
55
|
|
31
|
-
|
56
|
+
|
57
|
+
## git flowed
|
32
58
|
|
33
59
|
Development will happen in the `develop` branch now, master should be in a deployable state.
|
34
60
|
|
@@ -39,9 +65,9 @@ Read more about `git flow` and the branchin model here:
|
|
39
65
|
|
40
66
|
I like this approach and try to use it whenever possible, also in one-man-development.
|
41
67
|
|
42
|
-
|
68
|
+
|
69
|
+
## License
|
43
70
|
|
44
71
|
This gem/software is licensed under MIT/X11 license. See [LICENSE](https://raw.github.com/asaaki/io_shuten/develop/LICENSE) (or [LICENSE.de](https://raw.github.com/asaaki/io_shuten/develop/LICENSE.de) for german translation).
|
45
72
|
|
46
73
|
— [Christoph 'asaaki' Grabo](https://github.com/asaaki)
|
47
|
-
|
data/Rakefile
CHANGED
@@ -20,7 +20,7 @@ Jeweler::Tasks.new do |gem|
|
|
20
20
|
gem.email = ["chris@dinarrr.com"]
|
21
21
|
gem.licenses = ["MIT"]
|
22
22
|
gem.homepage = "http://github.com/asaaki/io_shuten"
|
23
|
-
gem.summary = "IO::shuten – Use databases as IO handler."
|
23
|
+
gem.summary = "IO::shuten – Use databases as IO handler. (NOT YET READY FOR PRODUCTION!)"
|
24
24
|
gem.description = "IO::shuten – Use databases as IO handler like you would do with files and streams."
|
25
25
|
end
|
26
26
|
|
@@ -28,7 +28,7 @@ end
|
|
28
28
|
|
29
29
|
task :gem => :build
|
30
30
|
|
31
|
-
|
31
|
+
desc "Release current gem version to rubygems.org"
|
32
32
|
task "gem:release" => :gem do
|
33
33
|
system "gem push pkg/io_shuten-#{IO_shuten::VERSION}.gem"
|
34
34
|
end
|
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.
|
8
|
+
s.version = "0.0.1.dev3"
|
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"]
|
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
".rspec",
|
22
22
|
".rvmrc",
|
23
23
|
".simplecov",
|
24
|
+
".travis.yml",
|
24
25
|
"Gemfile",
|
25
26
|
"Gemfile.lock",
|
26
27
|
"LICENSE",
|
@@ -43,7 +44,7 @@ Gem::Specification.new do |s|
|
|
43
44
|
s.licenses = ["MIT"]
|
44
45
|
s.require_paths = ["lib"]
|
45
46
|
s.rubygems_version = "1.8.10"
|
46
|
-
s.summary = "IO::shuten \u{2013} Use databases as IO handler."
|
47
|
+
s.summary = "IO::shuten \u{2013} Use databases as IO handler. (NOT YET READY FOR PRODUCTION!)"
|
47
48
|
|
48
49
|
if s.respond_to? :specification_version then
|
49
50
|
s.specification_version = 3
|
data/lib/io_shuten/base.rb
CHANGED
@@ -2,19 +2,45 @@
|
|
2
2
|
module IO_shuten
|
3
3
|
class Base
|
4
4
|
|
5
|
-
class
|
5
|
+
class NodeNotFoundError < StandardError; end
|
6
|
+
class NodeNameError < StandardError; end
|
7
|
+
class NotImplementedYet < StandardError; end
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
+
@@instances = []
|
10
|
+
|
11
|
+
attr_reader :object_name
|
12
|
+
attr :container, :container_size
|
9
13
|
|
10
14
|
def initialize(object_name = nil, *args)
|
11
|
-
|
12
|
-
|
13
|
-
|
15
|
+
if [String,Symbol,NilClass].include?(object_name.class)
|
16
|
+
@object_name = object_name
|
17
|
+
@container = StringIO.new("","w+")
|
18
|
+
@container_size = @container.size
|
19
|
+
|
20
|
+
@@instances << self unless @@instances.include?(self)
|
21
|
+
else
|
22
|
+
raise NodeNameError, "Name must be kind of String or Symbol."
|
23
|
+
end
|
14
24
|
end
|
15
25
|
|
16
26
|
class << self
|
17
27
|
|
28
|
+
def instances
|
29
|
+
@@instances
|
30
|
+
end
|
31
|
+
|
32
|
+
def purge_instances
|
33
|
+
@@instances = []
|
34
|
+
end
|
35
|
+
|
36
|
+
def delete_instance object_name_or_instance
|
37
|
+
@@instances.delete_if do |object|
|
38
|
+
(object_name_or_instance.is_a?(Symbol) && object.object_name == object_name_or_instance) ||
|
39
|
+
(object_name_or_instance.is_a?(String) && object.object_name == object_name_or_instance) ||
|
40
|
+
(object_name_or_instance.is_a?(Base) && object == object_name_or_instance)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
18
44
|
def open object_name, *args
|
19
45
|
if Base.exists? object_name
|
20
46
|
if block_given?
|
@@ -27,7 +53,7 @@ module IO_shuten
|
|
27
53
|
end
|
28
54
|
|
29
55
|
else
|
30
|
-
raise
|
56
|
+
raise NodeNotFoundError
|
31
57
|
end
|
32
58
|
end
|
33
59
|
|
@@ -40,37 +66,30 @@ module IO_shuten
|
|
40
66
|
|
41
67
|
def load object_name
|
42
68
|
obj = Base.new object_name
|
43
|
-
obj.
|
69
|
+
obj.string ""
|
44
70
|
obj
|
45
71
|
end
|
46
72
|
alias_method :load_object, :load
|
47
73
|
|
48
74
|
end
|
49
75
|
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
def each
|
57
|
-
end
|
58
|
-
alias_method :each_line, :each
|
59
|
-
alias_method :lines, :each
|
60
|
-
|
61
|
-
def write str
|
62
|
-
@object_content.puts str.to_s
|
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}."
|
79
|
+
else
|
80
|
+
true
|
81
|
+
end
|
63
82
|
end
|
64
83
|
|
65
84
|
private
|
66
85
|
|
67
|
-
def
|
68
|
-
@
|
69
|
-
@object_content_size = @object_content.size
|
86
|
+
def object_respond_to? sym, include_private
|
87
|
+
@container.respond_to? sym, include_private
|
70
88
|
end
|
71
89
|
|
72
|
-
def
|
73
|
-
@object_content.
|
90
|
+
def set_object_content object_content
|
91
|
+
@container.string = object_content.to_s
|
92
|
+
@container_size = @container.size
|
74
93
|
end
|
75
94
|
|
76
95
|
end
|
data/lib/io_shuten/version.rb
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path("../../spec_helper.rb", __FILE__)
|
|
3
3
|
require "logger"
|
4
4
|
|
5
5
|
describe "Logger" do
|
6
|
-
it "accepts an
|
6
|
+
it "accepts an IO_shuten::Base as logdev" do
|
7
7
|
logdev = IO_shuten::Base.new("logdev")
|
8
8
|
logger = Logger.new(logdev)
|
9
9
|
end
|
data/spec/lib/base_spec.rb
CHANGED
@@ -17,18 +17,83 @@ describe Base do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
context "with object_name" do
|
20
|
-
it "creates a new object with
|
20
|
+
it "creates a new object with name as String" do
|
21
21
|
object_name = "foo bar"
|
22
22
|
ios = Base.new(object_name)
|
23
23
|
ios.should be_an(IO_shuten::Base)
|
24
24
|
ios.object_name.should == object_name
|
25
25
|
end
|
26
|
+
|
27
|
+
it "creates a new object with name as Symbol" do
|
28
|
+
object_name = :foobar
|
29
|
+
ios = Base.new(object_name)
|
30
|
+
ios.should be_an(IO_shuten::Base)
|
31
|
+
ios.object_name.should == object_name
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "class based memory storage" do
|
38
|
+
describe :purge_instances do
|
39
|
+
it "purges all instances" do
|
40
|
+
Base.purge_instances
|
41
|
+
Base.instances.should have(0).items
|
42
|
+
end
|
26
43
|
end
|
27
44
|
|
45
|
+
describe :instances do
|
46
|
+
it "retrieves all @@instances" do
|
47
|
+
Base.purge_instances
|
48
|
+
objects = %w[first second last]
|
49
|
+
objects.each do |object_name|
|
50
|
+
Base.new(object_name)
|
51
|
+
end
|
52
|
+
|
53
|
+
Base.instances.should have(3).items
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe :delete_instance do
|
58
|
+
before do
|
59
|
+
Base.purge_instances
|
60
|
+
@object_names = %w[first second last]
|
61
|
+
@objects = @object_names.inject([]) do |store, object_name|
|
62
|
+
store << Base.new(object_name)
|
63
|
+
store
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
it "removes an instance by name from store" do
|
68
|
+
Base.delete_instance(@object_names.first)
|
69
|
+
Base.instances.should_not include(@objects.first)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "removes an instance by object from store" do
|
73
|
+
Base.delete_instance(@objects.first)
|
74
|
+
Base.instances.should_not include(@objects.first)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "removes an instance by symbolized name from store" do
|
78
|
+
Base.purge_instances
|
79
|
+
@object_names = %w[first second last].map(&:to_sym)
|
80
|
+
@objects = @object_names.inject([]) do |store, object_name|
|
81
|
+
store << Base.new(object_name)
|
82
|
+
store
|
83
|
+
end
|
84
|
+
Base.delete_instance(@object_names.first)
|
85
|
+
Base.instances.should_not include(@objects.first)
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
28
89
|
end
|
29
90
|
|
30
91
|
describe :open do
|
31
92
|
|
93
|
+
before do
|
94
|
+
Base.purge_instances
|
95
|
+
end
|
96
|
+
|
32
97
|
context "without any args" do
|
33
98
|
it "raises ArgumentError" do
|
34
99
|
expect { Base.open }.to raise_error(ArgumentError)
|
@@ -40,7 +105,7 @@ describe Base do
|
|
40
105
|
context "and object does not exist" do
|
41
106
|
it "raises NodeNotFound error" do
|
42
107
|
Base.stub(:exists?).and_return(false)
|
43
|
-
expect { Base.open("foo bar") }.to raise_error(Base::
|
108
|
+
expect { Base.open("foo bar") }.to raise_error(Base::NodeNotFoundError)
|
44
109
|
end
|
45
110
|
end
|
46
111
|
|
@@ -48,7 +113,7 @@ describe Base do
|
|
48
113
|
it "returns the requested object" do
|
49
114
|
object_name = "foo bar"
|
50
115
|
object_cont = "demo content of object"
|
51
|
-
object_mock = double(Base, :object_name => object_name, :
|
116
|
+
object_mock = double(Base, :object_name => object_name, :container => object_cont)
|
52
117
|
|
53
118
|
Base.should_receive(:exists?).with(object_name).and_return(true)
|
54
119
|
Base.should_receive(:load).and_return(object_mock)
|
@@ -56,7 +121,7 @@ describe Base do
|
|
56
121
|
ios = Base.open(object_name)
|
57
122
|
|
58
123
|
ios.object_name.should == object_name
|
59
|
-
ios.
|
124
|
+
ios.container.should == object_cont
|
60
125
|
end
|
61
126
|
end
|
62
127
|
end
|
@@ -77,31 +142,29 @@ describe Base do
|
|
77
142
|
|
78
143
|
describe "Instance Methods" do
|
79
144
|
|
80
|
-
describe
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
it "
|
101
|
-
|
102
|
-
|
103
|
-
context "with block" do
|
104
|
-
it "iterates the bytes"
|
145
|
+
describe "StringIO method wrapper" do
|
146
|
+
method_list = %w[
|
147
|
+
binmode bytes
|
148
|
+
chars close close_read close_write closed? closed_read? closed_write? codepoints
|
149
|
+
each each_byte each_char each_codepoint each_line
|
150
|
+
eof eof?
|
151
|
+
external_encoding
|
152
|
+
fcntl fileno flush fsync
|
153
|
+
getbyte getc gets
|
154
|
+
internal_encoding isatty
|
155
|
+
length lineno lineno= lines
|
156
|
+
pid pos pos= print printf putc puts
|
157
|
+
read read_nonblock readbyte readchar readline readlines readpartial
|
158
|
+
reopen rewind
|
159
|
+
seek set_encoding size string string= sync sync= sysread syswrite
|
160
|
+
tell truncate tty?
|
161
|
+
ungetbyte ungetc
|
162
|
+
write write_nonblock
|
163
|
+
]
|
164
|
+
method_list.each do |method_name|
|
165
|
+
it "- responds to ##{method_name}" do
|
166
|
+
Base.new.should respond_to(method_name)
|
167
|
+
end
|
105
168
|
end
|
106
169
|
end
|
107
170
|
|
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.
|
4
|
+
version: 0.0.1.dev3
|
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: &
|
16
|
+
requirement: &23011240 !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: *
|
24
|
+
version_requirements: *23011240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis
|
27
|
-
requirement: &
|
27
|
+
requirement: &23010760 !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: *
|
35
|
+
version_requirements: *23010760
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bson_ext
|
38
|
-
requirement: &
|
38
|
+
requirement: &23010280 !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: *
|
46
|
+
version_requirements: *23010280
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: mongo
|
49
|
-
requirement: &
|
49
|
+
requirement: &23009800 !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: *
|
57
|
+
version_requirements: *23009800
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &23009320 !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: *
|
68
|
+
version_requirements: *23009320
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &23008840 !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: *
|
79
|
+
version_requirements: *23008840
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &23008360 !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: *
|
90
|
+
version_requirements: *23008360
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: simplecov
|
93
|
-
requirement: &
|
93
|
+
requirement: &23007880 !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: *
|
101
|
+
version_requirements: *23007880
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: simplecov-rcov
|
104
|
-
requirement: &
|
104
|
+
requirement: &23007400 !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: *
|
112
|
+
version_requirements: *23007400
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: simplecov-csv
|
115
|
-
requirement: &
|
115
|
+
requirement: &23006920 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *23006920
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: pry
|
126
|
-
requirement: &
|
126
|
+
requirement: &23006440 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *23006440
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: pry-doc
|
137
|
-
requirement: &
|
137
|
+
requirement: &23005960 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,7 +142,7 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *23005960
|
146
146
|
description: IO::shuten – Use databases as IO handler like you would do with files
|
147
147
|
and streams.
|
148
148
|
email:
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- .rspec
|
158
158
|
- .rvmrc
|
159
159
|
- .simplecov
|
160
|
+
- .travis.yml
|
160
161
|
- Gemfile
|
161
162
|
- Gemfile.lock
|
162
163
|
- LICENSE
|
@@ -189,7 +190,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
190
|
version: '0'
|
190
191
|
segments:
|
191
192
|
- 0
|
192
|
-
hash:
|
193
|
+
hash: 2524218372988733480
|
193
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
195
|
none: false
|
195
196
|
requirements:
|
@@ -201,5 +202,5 @@ rubyforge_project:
|
|
201
202
|
rubygems_version: 1.8.10
|
202
203
|
signing_key:
|
203
204
|
specification_version: 3
|
204
|
-
summary: IO::shuten – Use databases as IO handler.
|
205
|
+
summary: IO::shuten – Use databases as IO handler. (NOT YET READY FOR PRODUCTION!)
|
205
206
|
test_files: []
|