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 +20 -0
- data/.yardoc/checksums +5 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/.yardopts +4 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +13 -0
- data/README.md +1 -0
- data/Rakefile +16 -0
- data/io_shuten.gemspec +21 -1
- data/lib/io_shuten.rb +7 -3
- data/lib/io_shuten/base.rb +111 -17
- data/lib/io_shuten/mongo.rb +4 -0
- data/lib/io_shuten/redis.rb +2 -0
- data/lib/io_shuten/version.rb +2 -1
- data/spec/examples/logger_spec.rb +6 -1
- data/spec/lib/base_spec.rb +163 -12
- metadata +86 -26
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
|
data/.yardoc/proxy_types
ADDED
Binary file
|
data/.yardopts
ADDED
data/Gemfile
CHANGED
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
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.
|
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
|
-
#
|
9
|
-
|
10
|
-
|
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
|
|
data/lib/io_shuten/base.rb
CHANGED
@@ -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
|
-
|
7
|
-
class
|
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
|
-
|
12
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
77
|
-
|
78
|
-
|
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
|
-
|
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
|
-
|
87
|
-
|
179
|
+
# @private
|
180
|
+
def not_yet_implemented! callee = nil, pos = nil
|
181
|
+
raise NotYetImplemented, callee, pos
|
88
182
|
end
|
89
183
|
|
90
|
-
|
91
|
-
|
92
|
-
@
|
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
|
data/lib/io_shuten/mongo.rb
CHANGED
data/lib/io_shuten/redis.rb
CHANGED
data/lib/io_shuten/version.rb
CHANGED
@@ -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(
|
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
|
data/spec/lib/base_spec.rb
CHANGED
@@ -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
|
-
|
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *21837220
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: redis
|
27
|
-
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: *
|
35
|
+
version_requirements: *21834920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bson_ext
|
38
|
-
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: *
|
46
|
+
version_requirements: *21849760
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: mongo
|
49
|
-
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: *
|
57
|
+
version_requirements: *21847480
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
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: *
|
68
|
+
version_requirements: *21845600
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
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: *
|
79
|
+
version_requirements: *21844520
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
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: *
|
90
|
+
version_requirements: *22283120
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: simplecov
|
93
|
-
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: *
|
101
|
+
version_requirements: *22281600
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: simplecov-rcov
|
104
|
-
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: *
|
112
|
+
version_requirements: *22279920
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: simplecov-csv
|
115
|
-
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: *
|
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: &
|
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: *
|
189
|
+
version_requirements: *22284360
|
135
190
|
- !ruby/object:Gem::Dependency
|
136
191
|
name: pry-doc
|
137
|
-
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: *
|
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:
|
253
|
+
hash: -2605549533017634266
|
194
254
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
255
|
none: false
|
196
256
|
requirements:
|